我正在使用matplotlib的imshow()
函数来显示pandas.DataFrame
。
我希望x轴和y轴的标签和刻度都可以从DataFrame.index
和DataFrame.columns
列表中绘制,但我不知道如何做到这一点。
假设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轴的刻度标签显示为二月至七月而不是一月至十二月。
如果使用代码:
ax1 = fig.add_subplot(131) # without specifying tick labels
我最终得到的轴刻度标签只是基础ndarray索引值(即0-201和0-12)。我不需要修改刻度和标签的间距或数量,只想让标签文本来自DataFrame索引和列列表。不确定是否漏掉了一些简单的东西?
提前致谢。