2011-06-03 185 views
3

我有一些数据绘制,其中包括每个子图上的一些限制:aerodynamic angles with limits两个轴都有限制,但由于数据非常适合第二个绘图的限制,所以限制本身设置y轴的badary,使得他们看不见。有没有办法告诉matplotlib放大绘图数据的缩放?

为了让他们看到,我可以做这样的事情:

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

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

感谢您的帮助。

+0

虽然它没有记录,我试图'get_ylim ()'并且它工作,所以我能够扩大限制并重新应用'set_ylim()',所以我现在有一个体面的解决方法,但是如果我有更好的方法会很好。我想我可以编写一个小函数,这个函数可以处理我传给它的任何一组轴。 – 2NinerRomeo 2011-06-03 17:45:59

+0

FWIW它似乎记录:http://matplotlib.sourceforge.net/api/axes_api.html?highlight=_ylim#matplotlib.axes.Axes.get_ylim – bernie 2011-06-03 17:49:03

+0

老鼠!我在错误的地方看,旧轴与坐标轴混淆。显然我需要花更多的时间去理解这些区别。 – 2NinerRomeo 2011-06-03 17:53:57

回答

4

在问候你的要求的功能改变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()

+0

这将以最优雅的方式代替内置功能来完成这项工作。 – 2NinerRomeo 2011-06-03 18:51:00

+0

如果ymin为0会怎么样?你不是真的想要'ymin - 0.1 *(ymax-ymin)'吗? – endolith 2011-11-28 17:53:05

+0

谢谢,endolith。我结合了你的建议。 – bernie 2011-11-28 18:28:47

相关问题