【问题标题】:Is there a way to tell matplotlib to loosen the zoom on the plotted data? [duplicate]有没有办法告诉 matplotlib 放松绘制数据的缩放? [复制]
【发布时间】:2011-06-03 17:37:48
【问题描述】:

我绘制了一些数据,其中包括每个子图的一些限制: 两个轴都有限制,但由于数据非常适合第二个图的限制,限制本身设置了 y- 的边界轴,使它们不可见。

为了让它们可见,我可以这样做:

axes.set_ylim(1.1*lowerLimit,1.1*upperLimit)

其中lowerLimitupperLimit 首先是用于生成限制的数据,但我想知道matplotlib 是否有机制告诉它在自动设置限制时不要那么热心。我现在拥有的解决方案也有一个限制,即如果数据偏离边界,就有可能超出界限,所以我搜索了set_ylim() 的补充,它可以告诉我限制是什么,类似于get_ylim() 但是the documentation 中似乎不存在。

感谢您的帮助。

【问题讨论】:

  • 虽然没有记录,但我尝试了 get_ylim() 并且它成功了,所以我能够扩大限制并使用 set_ylim() 重新应用它们,所以我现在有一个不错的解决方法,但如果我有更好的方法,那就太好了。我想我可以编写一个小函数来对我传递给它的任何一组轴执行此操作。
  • FWIW 似乎确实记录在案:matplotlib.sourceforge.net/api/…
  • 老鼠!我找错地方了,旧轴与轴的混淆。显然我需要花更多的时间来了解这些区别。
  • 我经常遇到这个问题。我希望能够为 all 图设置一些默认百分比边距。有办法吗?
  • @tcaswell, 选择哪个问题是原始问题和哪个问题是重复问题的标准是什么?这个问题似乎比另一个问题早了一年多。

标签: python matplotlib


【解决方案1】:

关于您要求更改 y 轴限制的功能,这是否适合您的目的?:

def larger_axlim( axlim ):
    """ argument axlim expects 2-tuple 
        returns slightly larger 2-tuple """
    axmin,axmax = axlim
    axrng = axmax - axmin
    new_min = axmin - 0.1 * axrng
    new_max = axmax + 0.1 * axrng
    return new_min,new_max
...
ax.set_ylim( larger_axlim( ax.get_ylim() ) )
...

文档:get_ylim()

【讨论】:

  • 这将以最优雅的方式完成工作,而不是内置功能。
  • 如果 ymin 为 0 会怎样?你真的不想要ymin - 0.1 * (ymax-ymin)这样的东西吗?
  • 谢谢,恩多利斯。我采纳了你的建议。
  • 这就是 margins 要做的事情
  • 是否有margins 属性可以应用于自动缩放?我们可以修改哪个margins 属性以使自动缩放在数据周围留出余量?谢谢。
猜你喜欢
  • 2020-10-27
  • 2010-12-10
  • 2021-05-25
  • 1970-01-01
  • 2016-06-29
  • 1970-01-01
  • 2021-03-04
  • 2012-11-16
相关资源
最近更新 更多