我想绘制一条跨越整个 y 轴的垂直线,例如位于x 轴的 x=.25 位置,而不是数据轴。
根据这个答案(显然不完全准确),axhline,axvline函数将在轴坐标中绘制一条水平/垂直线,如下所示:
方法 axhline 和 axvline 用于在轴坐标处画线
但这似乎不起作用。该axhline文档说:
水平线数据坐标中的y 位置。
果然,上面答案中给出的代码显示:
与上述答案(下面的代码)中显示的旧图进行比较:
这是最近发生的变化还是我遗漏了一些非常明显的东西?如果它确实改变了,我现在如何在轴坐标中画一条线?
我使用的是 Python 3.7.3 和matplotlib3.1.0。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 5, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.axhline(y=0.5, xmin=0.0, xmax=1.0, color='r')
ax.hlines(y=0.6, xmin=0.0, xmax=1.0, color='b')
plt.show()
Run Code Online (Sandbox Code Playgroud)
回答问题
如果我想绘制一条横跨整个 y 轴的垂直线,位于 x 轴的 x=.25 位置,而不是数据轴。我该怎么做?
在那种情况下,那条线的 x 坐标0.25和 y 坐标都0用于下端和1上端。线的变换设置为轴坐标系 ax.transAxes。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set(xlim=(0.5,1.5), ylim=(-50,50))
ax.plot([0.25,0.25],[0,1], transform=ax.transAxes)
plt.show()
Run Code Online (Sandbox Code Playgroud)