如何在 Matplotlib 中绘制水平和垂直线

Jinku Hu 2023年1月30日 2019年12月9日
  1. axhlineaxvline 在 Matplotlib 中绘制水平和垂直线
  2. hlinesvlines 在 Matplotlib 中绘制水平和垂直线
  3. 在 Matplotlib 中绘制水平和垂直线的结论
  4. Conclusion of drawing horizontal and vertical lines in Matplotlib
如何在 Matplotlib 中绘制水平和垂直线

在本教程中,我们将介绍两种在 Matplotlib 中绘制水平和垂直线条的方法。这两种方法在 Matplotlib 中使用不同的坐标系统。

  • axhline() / axvline()
  • hlines() / vlines()

axhlineaxvline 在 Matplotlib 中绘制水平和垂直线

axhline 画一条水平线

matplotlib.pyplot.axhline(y=0, xmin=0, xmax=1, hold=None, **kwargs)

axhline 在水平线的 y 数据坐标中的位置处绘制一条水平线,从 xminxmax,该点应位于 0.0 和之间 1.0,其中 0.0 是图的最左侧,1.0 是图的最右侧。

from matplotlib import pyplot as plt

xdata = list(range(10))
ydata = [_*2 for _ in xdata]

plt.plot(xdata, ydata, 'b')

plt.axhline(y=5, xmin=0.1, xmax=0.9)

plt.grid()
plt.show()

Matplotlib 用 axhline 画水平线

axvline 画一条垂直线

同样,

matplotlib.pyplot.axvline(x=0, ymin=0, ymax=1, hold=None, **kwargs)

axvline 在垂直线的 x 数据坐标中的位置处绘制一条垂直线,从 yminymax,该点应在 0.0 和之间 1.0,其中 0.0 是图的底部,1.0 是图的顶部。

from matplotlib import pyplot as plt

xdata = list(range(10))
ydata = [_*2 for _ in xdata]

plt.plot(xdata, ydata, 'b')

plt.axvline(x=5, ymin=0.1, ymax=0.9)

plt.grid()
plt.show()

Matplotlib 用 axhline 画垂直线

如上所述,xmin/ xmaxymin/ ymax 是指 Matplot 图,而不是所绘制的数据线。

因此,如果我们放大或缩小绘图,则水平和垂直线的起点和终点将参考数据坐标进行更新,但会固定在绘图坐标中的相对位置。我们可以用下面的动画来更好的理解。

Matplotlib 水平和垂直线放大效果

hlinesvlines 在 Matplotlib 中绘制水平和垂直线

如果我们希望绘制的水平线和垂直线会自动更改以保持对所绘数据的相对位置,则需要使用 hlinesvlines

hlines(y, xmin, xmax)

这里 yxminxmax 指的是数据坐标值。

vlines(x, ymin, ymax)

这里 xyminymax 指的是数据坐标值。

让我们看下面的代码示例。

from matplotlib import pyplot as plt

xdata = list(range(10))
ydata = [_*2 for _ in xdata]

plt.plot(xdata, ydata, 'b')

plt.hlines(y=5, xmin=0, xmax=10)
plt.vlines(x=5, ymin=0, ymax=20)

plt.grid()
plt.show()

Matplotlib hlines 和 vlines 绘制水平和垂直线

Matplotlib hlines 和 vlines 水平和垂直线放大效果

在 Matplotlib 中绘制水平和垂直线的结论

如果你绘制的线段跟绘图保持相对固定的位置,则 axhlineaxvline 应该是更好的选择。

如果你绘制的线段需要参照所绘数据,则 hlinesvlines 是更好的选择。

Matplotlib_hlines and vlines to plot horizontal and vertical lines

Matplotlib hlines and vlines horizontal and vertical line zoom in effect

Conclusion of drawing horizontal and vertical lines in Matplotlib

If you need the line to be referred to the plot, axhline and axvline should be the better option.

If you prefer the line to stick to the data coordinate, hlines and vlines are the better choices.

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相关文章 - Matplotlib Line