根据文档页面:http://matplotlib.sourceforge.net/api/pyplot_api.html使用axvline的方法如下
axvline(x=0, ymin=0, ymax=1)
但是,这在我的电脑中不起作用。什么都没有画。更确切地说,简单地说
axvline(x=0)
不设置ymin和ymax工作。
我不确定这是否是一个bug。或许我错过了一些微妙的东西?
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条答案
按热度按时间ohfgkhjo1#
来自
help(axvline)
中的文档:在 x 处画一条垂直线,从 ymin 到 ymax。在默认值 ymin = 0和 ymax = 1的情况下,这条线将始终跨越轴的垂直范围,无论ylim设置如何,即使您更改了它们,例如关于:meth:
set_ylim
命令。也就是说,垂直范围以轴坐标为单位:0=底部,0.5=中间,1.0=顶部,但 x 位置在数据坐标中。所以呢
画了一条线就在绘图区域外。如果您将线宽增大,您可以看到:
guykilcj2#
现在我意识到ymin和ymax不是在数据坐标中,而是在“归一化”坐标中。所以,0表示图的底部,而1表示图的顶部。