我正在尝试使用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")
知道如何使网格均匀吗?我已经尝试了here所讨论的所有宽高比问题,但它似乎没有解决问题。我正在使用Python 2.7.6和matplotlib版本1.3.1。
编辑: 这是一张图片,显示如果我一直放大,大网格中的细胞看起来是什么样的。这是使用稍微不同的着色函数获得的,其中9个细胞的簇通过增加色调着色。这更清楚地显示了不均匀的形状。如果你愿意,我可以包含代码,但是我会得到与(非常复杂的)随机代码相同的行为。
这就是我使用小网格时的外观(再次放大):
答案 0 :(得分:0)
好的,我明白了。问题是我保存图像时没有使用足够高的dpi。 plt.savefig("test.png", dpi=1000)
会产生一个图像,其中即使是一个大网格也会被描绘成均匀大小的正方形。
通过不增加较大网格的dpi,我有效地尝试在相同数量的像素中绘制更多信息,因此分辨率降低到细胞变得错过的程度。