2014-11-23 116 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的形状相匹配。