首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AttributeError: ErrorbarContainer对象没有属性“set_ylim”

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

Stack Overflow用户
提问于 2016-08-31 23:32:10
回答 2查看 5.3K关注 0票数 1

我正在用错误条绘制一些实验的结果。我希望能够在结果与极端异常值的情况下设置y限制,这是不感兴趣的。此代码:

代码语言:javascript
运行
复制
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)

产生此错误:

代码语言:javascript
运行
复制
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的限制?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-03 17:47:24

只需使用matplotlib.pyplot.ylim()函数即可。

您的示例不是独立的,因此我无法检查下面的代码是否实际工作,但至少前面提到的错误将被修复:

代码语言:javascript
运行
复制
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)
票数 6
EN

Stack Overflow用户

发布于 2016-09-06 10:29:54

由于这是一个赏金问题,我将在这里尝试更多的细节。

plt.errorbar不返回Axes对象(该对象具有set_ylim方法),而是返回(plotline, caplines, barlinecols)的集合。我怀疑您可能期望使用Axes对象,因为这是pandas.DataFrame.plot返回的内容。

当直接使用matplotlib的pyplot时,您有两个选项:

选项1 -直接使用pyplot,而不处理轴:

代码语言:javascript
运行
复制
plt.errorbar( ... )
plt.ylim([-.2, .2])

使用plt将属性设置为所选的最后一个子图(默认情况下只有一个)。在处理单个数字时,您可能更喜欢这种方法。

选项2 -从subplots获取axes对象

代码语言:javascript
运行
复制
fig, ax = plt.subplots(1, 1, figsize=(10, 5))
ax.errorbar( ... )
ax.set_ylim([-.2, .2])

这可能是首选方法,部分原因是它允许在rcParams中设置图形大小而不需要全局设置。它还有其他一些我不会进入这里的优点。

注意,在使用plt时,方法是ylim,使用Axes对象时是set_ylim。许多其他属性,如标题、标签等,都是如此。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39260561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档