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

时间:2014-04-26 13:19:49

标签: python matplotlib

我需要"突出显示"我的图表/图表的x轴上的一些位置发生了重大事件。由于图表/图表实际上到处都是我不想在图表/图表区域内添加vlines,而是在图表/图表区域的顶部添加箭头或线条,我在以书面提及事件时可以参考的数字(例如(A))。

我设法绘制了vlines,但标签根本不可见。最重要的是我想要箭头而不是线条,因为读者会更清楚......

我现在如何策划

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 个答案:

答案 0 :(得分:7)

您可以使用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