Python 更改errorbar绘图中的x轴标签:无属性';获取xTicklabel';
我正在尝试绘制一些数据,主要的绘图信息是Python 更改errorbar绘图中的x轴标签:无属性';获取xTicklabel';,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,我正在尝试绘制一些数据,主要的绘图信息是 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='-') 问题是每个数据帧索引是整体的5%增量(即d
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='-')
问题是每个数据帧索引是整体的5%增量(即df1索引是0,5,10…100,df2也是如此)。结果是绘图试图在x轴上填充40个标签
我尝试过几种不同的方法,但迄今为止没有一种有效。例如,尝试旋转标签并减小字体大小,例如:
plt.setp(ax1.get_xticklabels(), rotation='vertical', fontsize=7)
返回
AttributeError: 'ErrorbarContainer' object has no attribute 'get_xticklabels'
如果我尝试使用勾选参数
我认为这可能是因为情节将x轴视为绝对的,但我不知道如何修复它
理想情况下,我只想显示ax1和ax2的0、25、50、75和100%标签,但在这一点上,我很乐意旋转它们,使它们看起来更好。问题是,您使用的是绘图的句柄(错误条的句柄),而不是轴的句柄。有两种方法可以获取轴的控制柄:
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()
这将导致:
如果要使用当前轴的控制柄,还可以使用:
plt.setp(plt.gca().get_xticklabels(), rotation='vertical', fontsize=7)
您需要轴的控制柄,而不是绘图的控制柄。您可以使用
plt.setp(plt.gca(),…
。或者您可以在创建图形时获取句柄:fig,ax=plt.subplot()
,其中ax
是句柄。谢谢。我正在使用plt.setp(plt.gca(ax1.set\uxticklabels(rotation=40,ha=“right”))
但我收到了相同的错误消息。我假设我的语法是错误的?我已将我的注释升级为完整的答案,以唯一地定义语法。希望这会有所帮助!非常感谢扩展的描述。我怀疑,和许多新手一样,在熟悉python和pandas之后,我对Matplotlib.Yo的语法有点费劲你的第二个建议完全解决了我的问题。我很好奇,如果我有两个ax绘图,第一个解决方案会如何工作?第二个ax1=plt.subplot()
是在同一行中引入的还是作为plt.show()之前的第二组绘图信息引入的
。再次感谢您的帮助。@nick.sculthorpe我感觉您将一个轴与一个(n)(绘图)对象缠绕在一起。一个轴可以容纳多个绘图对象,正如我在编辑中所述。除此之外,一个图形可以容纳多个轴(子绘图),但我觉得这不是你的意思?非常感谢!这正是我的意思。我不是按照你的例子在同一个图上叠加不同的图,而是在同一个图上放置不同的线。太好了。再次感谢。