更改误差线图中的x轴标签:无属性'get_xticklabels'

时间:2018-10-04 05:54:27

标签: python python-3.x matplotlib

我试图绘制一些数据,主要的绘制信息是

True

问题是每个数据帧索引是整体的5%增量(即df1索引是df2的是0,5,10 ... 100),结果是该图试图在x-上填充40个标签轴

我尝试了几种不同的方法,但到目前为止都没有奏效。例如,尝试旋转标签并减小字体大小,例如:

ax1 = plt.errorbar(df1.index, df1['Mean'],
               yerr=df1['SD'], color='black', linestyle='-')
ax2 = plt.errorbar(df2.index, df2['Mean'],
               yerr=df2['SD'], color='grey', linestyle='-')

返回

plt.setp(ax1.get_xticklabels(), rotation='vertical', fontsize=7)

如果我尝试使用AttributeError: 'ErrorbarContainer' object has no attribute 'get_xticklabels' 来更改ax1和ax2的x轴,则会出现相同的错误

我认为可能是因为该图将x轴视为类别,但是我对如何解决它感到困惑?

理想情况下,我只想显示ax1和ax2的0%,25%,50%,75%和100%标签,但是现在我很乐意旋转它们,使它们看起来更好。

1 个答案:

答案 0 :(得分:2)

问题是您使用的是errorbar的图的句柄,而不是轴的句柄。有两种获取轴柄的方法:

  1. 创建图形(或实际上是轴)时。
  2. 您随时可以使用plt.gca()获取当前轴的手柄。

一个例子:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.errorbar([0,1,2], [0,1,2], yerr=[.01,.05,.1])
ax.errorbar([0,1,2], [0,2,4], yerr=[.01,.05,.1])

plt.setp(ax.get_xticklabels(), rotation='vertical', fontsize=7)

plt.show()

这将导致:

enter image description here

如果要使用当前轴的手柄,也可以使用:

plt.setp(plt.gca().get_xticklabels(), rotation='vertical', fontsize=7)