在matplotlib.pyplot中,axvline在imshow后无法显示(img)

时间:2018-02-07 06:02:23

标签: python matplotlib

我有一个像这样的python代码:

import matplotlib.pyplot as plt

import matplotlib.image as mpimg

img = mpimg.imread('xxx.png')

fig = plt.figure(figsize=(8,10))

ax1 = fig.add_axes([0., 0.92, 0.1, 0.08])

ax1.imshow(img)

ax1.axvline(0.5, 0, 1, color='gray')

plt.show()

运行此代码会在轴区域显示img。 但是,vline没有出现。

如果我删除该行:ax1.imshow(img)并再次运行,我会看到vline。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你的线可能是在左手y轴上画出来的。 x的{​​{1}}坐标位于数据坐标中。 ax.axvline的x轴限制将是图像x方向上的像素数。因此,ax.imshow坐标0.5将位于x最左侧像素的中心。

尝试将axvline的imshow坐标增加到更大的数字,您可能会看到它。

来自axvline docs

x

考虑这个例子:

x : scalar, optional, default: 0

    x position in data coordinates of the vertical line.

注意左手y轴的蓝线。

enter image description here