matplotlib axvline中的一个错误?

时间:2012-08-08 12:54:04

标签: matplotlib

根据文档页面: http://matplotlib.sourceforge.net/api/pyplot_api.html 使用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.

2 个答案:

答案 0 :(得分:4)

来自help(axvline)中的文档:

  

x 处从 ymin ymax 画一条垂直线。默认情况下   值 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

答案 1 :(得分:2)

行。现在我意识到ymin和ymax不在数据坐标中,而是在“标准化”坐标中。因此,0表示图的底部,而1表示顶部。