[英]AttributeError: 'ErrorbarContainer' object has no attribute 'set_ylim'
我正在绘制一些带有误差线的实验结果。 我希望能够在没有异常的极端异常结果的情况下设置y极限。 这段代码:
axes = plt.errorbar(feature_data[feature_data.num_unique[feature_of_interest] > 1].index, chi_square_y, yerr=chi_square_y_error, fmt = 'o')
axes.set_ylim([-.2, .2])
plt.plot((min(feature_data[feature_data.num_unique[feature_of_interest] > 1].index), max(feature_data[feature_data.num_unique[feature_of_interest] > 1].index)), (0, 0), 'r--', linewidth = 2)
产生此错误:
AttributeError Traceback (most recent call last)
<ipython-input-79-794286dd3c29> in <module>()
18 rcParams['figure.figsize'] = 10, 5
19 axes = plt.errorbar(feature_data[feature_data.num_unique[feature_of_interest] > 1].index, chi_square_y, yerr=chi_square_y_error, fmt = 'o')
---> 20 axes.set_ylim([-.2, .2])
21 plt.plot((min(feature_data[feature_data.num_unique[feature_of_interest] > 1].index), max(feature_data[feature_data.num_unique[feature_of_interest] > 1].index)), (0, 0), 'r--', linewidth = 2)
AttributeError: 'ErrorbarContainer' object has no attribute 'set_ylim'
如何设置y限制?
谢谢!
只需使用matplotlib.pyplot.ylim()函数。
您的示例不是独立的,因此我无法检查以下代码是否确实有效,但至少可以解决上述错误:
plt.errorbar(feature_data[feature_data.num_unique[feature_of_interest] > 1].index, chi_square_y, yerr=chi_square_y_error, fmt = 'o')
plt.ylim(-.2, .2)
plt.plot((min(feature_data[feature_data.num_unique[feature_of_interest] > 1].index), max(feature_data[feature_data.num_unique[feature_of_interest] > 1].index)), (0, 0), 'r--', linewidth = 2)
由于这是一个赏金问题,我将在这里尝试更详细地说明。
plt.errorbar
不返回Axes对象(具有set_ylim
方法),而是返回(plotline, caplines, barlinecols)
的集合。 我怀疑您可能期望Axes对象,因为这是pandas.DataFrame.plot
返回的内容。
直接使用matplotlib的pyplot时,您有两个选择:
选项1-直接使用pyplot,无需处理轴:
plt.errorbar( ... )
plt.ylim([-.2, .2])
使用plt
将属性设置为最后选择的子图(默认情况下只有一个)。 处理单个图形时,您可能更喜欢这种方法。
选项2-从subplots
获取轴对象:
fig, ax = plt.subplots(1, 1, figsize=(10, 5))
ax.errorbar( ... )
ax.set_ylim([-.2, .2])
这可能是首选方法,部分原因是它允许设置图形大小而无需在rcParams
全局设置图形大小。 它还有其他一些优点,我将不在这里介绍。
注意,使用plt
,方法是ylim
;使用Axes对象时,则是set_ylim
。 这对于许多其他属性(例如标题,标签等)也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.