当网格大小很大时,Matplotlib imshow()网格不均匀

时间:2014-10-20 22:00:15

标签: python matplotlib imshow

我正在尝试使用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个细胞的簇通过增加色调着色。这更清楚地显示了不均匀的形状。如果你愿意,我可以包含代码,但是我会得到与(非常复杂的)随机代码相同的行为。  enter image description here

这就是我使用小网格时的外观(再次放大):

enter image description here

1 个答案:

答案 0 :(得分:0)

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

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