2012-08-08 16 views
2

根據文檔頁面: http://matplotlib.sourceforge.net/api/pyplot_api.html 使用axvline的方式就像是matplotlib axvline中的錯誤?

axvline(x=0, ymin=0, ymax=1) 

然而,這並不在我的電腦工作。沒有畫。相反,只是

axvline(x=0) 

沒有設置ymin和ymax的作品。

我不確定這是否是一個錯誤。或者我錯過了一些微妙的東西?

matplotlib.__version__ 
'0.99.1.1' 

uname -a 
Linux pc20172 2.6.32-41-generiC#94-Ubuntu SMP Fri Jul 6 18:00:34 UTC 2012 x86_64 GNU/Linux 

編輯:最小代碼重現該問題。

from pylab import * 
ion() 
plot([1,2]) 
axvline(x=0.5, ymin=1, ymax=2) # No vertical line is drawn. 

clf() # Clear the figure to redo the plot. 
plot([1,2]) 
axvline(x=0.5) # Now the desired vertical line is drawn. 
+0

你確定沒有畫任何東西嗎?如果這是圖中唯一的一行,請嘗試'axvline(x = 0,ymin = 0,ymax = 1,linewidth = 100)'使其更大。 – DSM 2012-08-08 13:51:55

+0

@DSM我不認爲線寬有任何問題。我添加了幾行代碼,您可以測試。 – FJDU 2012-08-08 14:52:48

回答

4

從文檔中help(axvline)

繪製在X的垂直線從YMINYMAX。隨着YMIN = 0和YMAX = 1的默認值 ,這條線將永遠跨越軸的 垂直範圍,無論ylim設置,即使 你改變它們,例如。與:meth:set_ylim命令。 也就是, 的垂直範圍是座標軸座標:0 =底部,0.5 =中間,1.0 =頂部 但x位置在數據座標中。

所以

axvline(x=0.5, ymin=1, ymax=2) # No vertical line is drawn. 

被畫一條線就在繪圖區。如果使線寬變大,你可以看到這一點:

pic showing just-out-of-bounds effect

+0

感謝您的回答!我也在幾秒前發現了這一點。 x和y使用不同的座標系有點讓人誤解。順便說一句,使用非常大的線寬的技巧非常有用!我不知道增加寬度也可以增加一條線的長度。 – FJDU 2012-08-08 15:04:19

+0

@ user789977:它不會增加線路本身的長度,但實際上它有一個小小的上限,除非它真的很大,否則很容易不會注意到。看到我的答案[這個問題](http://stackoverflow.com/questions/10297220/matplotlib-linewidth-is-added-to-the-length-of-a-line/10297860#10297860)。我應該承認,這只是偶然在這裏工作的原因:我原本以爲只是這條線路在一個案例中擁有情節邊緣,而且很難看清楚。 – DSM 2012-08-08 15:09:01

+0

你真的很有幫助!謝謝! – FJDU 2012-08-08 16:53:56

2

確定。現在我意識到ymin和ymax不在數據座標中,而是在「標準化」座標中。所以,0表示劇情的底部,而1表示頂部。