使用matplotlib并指向x轴上的特定值
我需要在我的图表的x轴上“标记”几个重要事件发生的位置。因为图表的内容比较杂乱,我不想在图表内部添加vlines
,而是想在图表的上方加上箭头或者线条,并且加上一个数字,方便我在后面提到这些事件时使用,比如用(A)来表示。
我已经能画出竖线了,但标签根本看不见。最重要的是,我希望用箭头代替线条,这样读者会更容易理解...
我现在的绘制方式
plt.vlines(
x = position[0],
ymin = axis_ymax,
ymax = axis_ymax + int(axis_ymax * 0.05),
linestyles = 'solid',
label = '(A)'
).set_clip_on(False)
1 个回答
9
你可以使用 ax.annotate
来给图表上的某个点添加注释,并用箭头指向它。
通过 ax.annotate
,你可以选择注释的内容、箭头尖端的坐标(xy
)、文本的位置坐标(xytext
),以及你希望箭头具备的任何属性(arrowprops
)。
import numpy as np
import matplotlib.pyplot as plt
# Generate some data
x = np.linspace(0, 10, 1000)
y = np.sin(np.exp(0.3*x))
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_ylim(-2,2)
ax.annotate('First maxima',
xy=(np.pi/2., 2),
xytext=(np.pi/2., 2.3),
arrowprops = dict(facecolor='black', shrink=0.05))
plt.show()