matplotlib的axvline中的bug?

h9vpoimq  于 2023-05-18  发布在  其他
关注(0)|答案(2)|浏览(141)

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

ohfgkhjo1#

来自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.

画了一条线就在绘图区域外。如果您将线宽增大,您可以看到:

guykilcj

guykilcj2#

现在我意识到ymin和ymax不是在数据坐标中,而是在“归一化”坐标中。所以,0表示图的底部,而1表示图的顶部。

相关问题