2011-06-03 34 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

相關問題