matplotlib pcolor轴刻度

时间:2014-11-23 00:02:15

标签: arrays matplotlib pandas heatmap

我用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 个答案:

答案 0 :(得分: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])   

答案 1 :(得分:2)

首先,建议您使用pcolormesh代替pcolor(更快,更灵活)。您需要告诉pcolormesh数据的x和y范围是什么。这是通过使用x和y值的数组调用它来完成的。假设你的2D数组被称为c,你可以这样做:

plt.pcolormesh(x, y, c)

其中x是具有x值的数组,y是具有y值的数组。您需要确保xy的尺寸与c的形状相匹配。

答案 2 :(得分: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])

或类似的东西。