2014-11-23 155 views
0

我已經使用令pColor繪製熱圖:matplotlib令pColor軸刻度

df = df.groupby(['d','f'])['beta'].sum() 
beta_df = df.unstack('f') 
plt.pcolor(beta_df) 

beta_df是尺寸35x35,從此開始:

f    0.05  0.06  0.07  0.08  0.09  0.10 ... 
d                  
0.050000 0.993125 0.993264 0.991511 0.995148 1.000422 1.003847 
0.105714 0.997931 0.998003 0.997459 1.000743 1.005858 1.001873 
... 

然而,軸線包含整數0〜而不是35 f和d的值。如何解決它?

回答

3

我發現這是唯一的尺度保持軸矯正方法:

tick_spacing = 10 
    plt.yticks(np.arange(0, len(df.index), tick_spacing), df.index[0::tick_spacing]) 
    plt.xticks(np.arange(0, len(df.columns), tick_spacing), df.columns[0::tick_spacing]) 
0

您可以使用plt.axis()方法來設置軸的值。所以我認爲你應該能夠這樣做(如果我沒有記錯我的熊貓):

xmin = beta_df.index.min() 
xmax = beta_df.index.max() 
ymax = beta_df.max() 
ymin = beta_df.min() 

然後:

plt.axis([xmin, xmax, ymin, ymax]) 

或者類似的東西。

+1

這是行不通的,因爲'pcolor'沒有合適的範圍內。 – tiago 2014-11-24 09:49:41

2

首先,建議您使用pcolormesh而不是pcolor(更快,更靈活)。你需要告訴pcolormesh什麼是你的數據的x和y範圍。這是通過用x和y值的數組調用它來完成的。假設你的二維數組被稱爲c,你做這樣的:

plt.pcolormesh(x, y, c) 

哪裏x與X值的數組,並y與y值。您需要確保xy的尺寸與c的形狀相匹配。