我正在使用 matplotlib 的imshow()
函数来显示pandas.DataFrame
.
我希望从 DataFrame.index 和 DataFrame.columns 列表中绘制 x 轴和 y 轴的标签和刻度,但我不知道该怎么做。
假设这data
是一个pandas.DataFrame
:
>>> print data
<class 'pandas.core.frame.DataFrame'>
Index: 201 entries, 1901 to 2101
Data columns:
jan 201 non-null values
feb 201 non-null values
mar 201 non-null values
apr 201 non-null values
may 201 non-null values
jun 201 non-null values
jul 201 non-null values
aug 201 non-null values
sep 201 non-null values
oct 201 non-null values
nov 201 non-null values
dec 201 non-null values
当我这样做时:
ax1 = fig.add_subplot(131, xticklabels=data.columns, yticklabels=data.index)
ax1.set_title("A")
ax1.tick_params(axis='both', direction='out')
im1 = ax1.imshow(data,
interpolation='nearest',
aspect='auto',
cmap=cmap )
我最终在图像的 y 轴上得到了间隔很好的刻度标签,但标签是 1901-1906 而不是 1901 到 2101。同样,x 轴刻度标签是 feb-jul 而不是 jan-dec。
如果我使用
ax1 = fig.add_subplot(131) # without specifying tick labels
然后我最终得到的轴刻度标签只是底层的 ndarray 索引值(即 0-201 和 0-12)。我不需要修改刻度和标签的间距或数量,我只希望标签文本来自 DataFrame 索引和列列表。不确定我是否遗漏了一些简单的东西?
提前致谢。