2

根据文档页面: 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.
4

2 回答 2

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.

在绘图区域外画一条线。如果你把线宽变大,你可以看到:

图片显示刚刚超出范围的效果

于 2012-08-08T14:56:47.103 回答
3

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

于 2012-08-08T14:59:33.743 回答