2013-01-02 92 views
4

我有一個顯示數值的colobar的imshow圖形。色條比圖形大得多。有沒有辦法對它們進行縮放,使其達到相同的尺寸,最好不影響圖形的縱橫比?將圖形擬合到matplotlib中的顏色條上

grid = np.ma.array(grid, mask=np.isnan(grid)) 
plot.imshow(grid, interpolation='nearest', aspect='equal', vmax = private.vmax, vmin = private.vmin) 
plot.minorticks_off() 
plot.set_xticks(range(len(placex)))   
plot.set_yticks(range(len(placey))) 
plot.set_xticklabels(placex)   
plot.set_yticklabels(placey, rotation = 0) 
plot.colorbar() 
plot.show() 
+0

什麼是該圖的縱橫比?你可以調整你的代碼來包含足夠的常量('placey','private。*'等),以便其他人可以通過複製和粘貼來運行你的代碼? – tacaswell

回答

4

您可以通過任何的matplotlib的內置方法指定軸對象,然後用它爲你的彩條,如:

import matplotlib.pyplot as plt 
import numpy as np 

ax2 = plt.subplot2grid((1,6), (0, 5), colspan=1) 
ax1 = plt.subplot2grid((1,6), (0, 0), colspan=5) 


plt.imshow(np.random.random((10,10))) 
plt.colorbar(cax=ax2) 

plt.show() 

這將導致類似:

Plot of sample code

儘管如果你的imshow-axes變得非常平坦(由於aspect =「equal」,這可能會發生),這沒有幫助。

如果你要處理這種情況下,您可以

  1. 調整圖形大小網格,例如方面

    無花果=係數(figsize = grid.shape [1] * 1.5/DPI,grid.shape [0]/DPI)

  2. 閱讀AX1的座標AFTER繪製,只是後,與創建AX2適當變換座標,然後使用ax2作爲顏色條。當您調整窗口大小時,這不會很好,但如果您只是自動創建圖像作爲圖像文件,則可能會出現問題。

如果2.是你所需要的,我可以爲此添加一個例子,但如果你確定這是你想要的,我將只做這個工作。

問候, 的Thorsten