使用matplotlib并指向x轴上的特定值

7 投票
1 回答
12473 浏览
提问于 2025-04-18 04:21

我需要在我的图表的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()

Plot

撰写回答