1

我正在尝试使用 matplotlib 中的 imshow() 函数在 177 X 177 网格中绘制颜色值。当我在一个小的(30X30)网格(即我设置width = 30)上运行以下代码时,它生成的图像具有漂亮、大小均匀的正方形。当我在更大的网格(150X150)上运行它时,正方形的比例不均匀。有些在一个或两个维度上拉伸。这是我正在使用的代码的简化版本:

grid = [[]]*width
for i in range(width):
    grid[i] = [[]]*width
    for j in range(width):
        grid[i][j] = (random(), random(), random())

plt.imshow(grid, interpolation="none", aspect=1)
plt.savefig("test.png")

知道如何使网格均匀吗?我已经尝试了这里讨论的所有纵横比的东西,但它似乎并没有解决问题。我正在使用 Python 2.7.6 和 matplotlib 1.3.1 版。

编辑:这是一张图片,显示了如果我一直放大,大网格中的单元格是什么样子。这是使用稍微不同的着色函数获得的,其中 9 个单元格的簇通过增加色调来着色。这更清楚地显示了不均匀的形状。如果你愿意,我可以包含代码,但我会得到与(更简单的)随机代码相同的行为。 在此处输入图像描述

这是我使用小网格时的样子(再次放大):

在此处输入图像描述

4

1 回答 1

2

好吧,我想通了。问题是我保存图像时没有使用足够高的 dpi。plt.savefig("test.png", dpi=1000)产生一个图像,其中即使是大网格也用大小均匀的正方形描绘。

通过不增加较大网格的 dpi,我有效地尝试在相同数量的像素中绘制更多信息,因此分辨率降低到单元格变形的程度。

于 2014-10-21T05:30:34.700 回答