繁体   English   中英

AttributeError:“ ErrorbarContainer”对象没有属性“ set_ylim”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM