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

7

我需要在我的图表/折线图的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


箭头是否可以完全位于图形区域之外?例如,从下方指向x轴,或者从上方指向x轴,从“天花板”上方指向x轴,这样说? - user3235200
如果您使用 ax.annotate('First maxima', xy=(np.pi/2., 2), xytext=(np.pi/2., 2.3), arrowprops = dict(facecolor='black', shrink=0.05)),那么箭头将会放置在绘图的顶部,并且文本将会在箭头上方。但请注意不要将文本放置得太高,否则它将会超出屏幕。 - Ffisegydd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接