2014-03-25 37 views
17

我正在使用matplotlib繪製數據。下面是有類似的功能代碼:使用matplotlib從0開始更改y範圍

import matplotlib.pyplot as plt 
f, ax = plt.subplots(1) 
xdata = [1, 4, 8] 
ydata = [10, 20, 30] 
ax.plot(xdata, ydata) 
plt.show(f) 

這說明在從10變爲30。雖然我滿意的X系列y軸的圖形的線,我想更改Y範圍從0開始並調整ymax以顯示一切。

我目前的解決辦法是要做到:

ax.set_ylim(0, max(ydata)) 

但是我想知道是否有一種方法,只是說:自動縮放,但是從0

+1

從文檔:'ylim(YMIN = 1)#調整最小離開最大unchanged' – askewchan

+0

由於@askewchan。我很明顯地試圖在問你之前做你的建議。然而,真正的問題是我在繪圖之前調用了這個方法。 –

+1

不明顯:P – askewchan

回答

27

解決方案,其實是很容易開始:範圍必須在之後設置的情節。

import matplotlib.pyplot as plt 
f, ax = plt.subplots(1) 
xdata = [1, 4, 8] 
ydata = [10, 20, 30] 
ax.plot(xdata, ydata) 
ax.set_ylim(ymin=0) 
plt.show(f) 

當我使用這種方法試着,我已經改變了ymin繪圖之前,產生了範圍[0,1]。

+0

啊,真好。我想即使離開'ymax'仍然必須關閉自動縮放。 – askewchan

+0

準確。並修復它到'1.0'。 –

+2

或關閉自動縮放。 – tacaswell

7

嘗試此

import matplotlib.pyplot as plt 
xdata = [1, 4, 8] 
ydata = [10, 20, 30] 
plt.plot(xdata, ydata) 
plt.ylim(ymin=0) # this line 
plt.show() 

文檔字符串如下:

>>> help(plt.ylim) 
Help on function ylim in module matplotlib.pyplot: 

ylim(*args, **kwargs) 
    Get or set the *y*-limits of the current axes. 

    :: 

     ymin, ymax = ylim() # return the current ylim 
     ylim((ymin, ymax)) # set the ylim to ymin, ymax 
     ylim(ymin, ymax) # set the ylim to ymin, ymax 

    If you do not specify args, you can pass the *ymin* and *ymax* as 
    kwargs, e.g.:: 

     ylim(ymax=3) # adjust the max leaving min unchanged 
     ylim(ymin=1) # adjust the min leaving max unchanged 

    Setting limits turns autoscaling off for the y-axis. 

    The new axis limits are returned as a length 2 tuple.