2014-10-20 95 views
0

我想在matplotlib中使用imshow()函數來繪製177 X 177網格中的顏色值。當我在一個小的(30X30)網格上運行以下代碼(即我設置了width = 30)時,它生成的圖像具有很好的大小均勻的正方形。當我在更大的網格上運行它時(150X150),正方形不均勻。有些被拉伸在一個或兩個維度上。這裏是我使用的代碼的簡化版本:當網格大小很大時Matplotlib imshow()網格不均勻

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

我無法重現您的問題,請張貼圖像。另外,'grid = np.random.rand((width,width,3))'會替換你的嵌套循環。 – tacaswell 2014-10-20 22:31:54

+0

圖片發佈。並且很好地捕捉代碼!我很快寫了這段代碼,以提供一個更簡單的例子。 – seaotternerd 2014-10-21 05:25:11

回答

0

好吧,我想通了。問題是我保存圖像時沒有使用足夠高的dpi。 plt.savefig("test.png", dpi=1000)會產生一幅圖像,其中即使是一個大網格也會顯示均勻大小的正方形。

通過不增加更大的網格的dpi,我有效地試圖在相同數量的像素中繪製更多信息,因此分辨率正在下降到細胞變得錯過陰影的點。