根据文档页面: 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.
答案 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.
正在绘图区域外画一条线。如果你将线宽做大,你可以看到:
答案 1 :(得分:2)
行。现在我意识到ymin和ymax不在数据坐标中,而是在“标准化”坐标中。因此,0表示图的底部,而1表示顶部。