在matplotlib中标记特定点

1 投票
1 回答
1086 浏览
提问于 2025-04-18 00:08

有一个基本的图表,如下所示:

import matplotlib.pyplot as plt
import numpy as np

y = np.array([1,2,3,4,5,6])
f, ax = plt.subplots()
ax.plot(y)
plt.show()

... 有没有办法在数据点“3”和“5”上添加一个小箭头呢?我需要这样做,因为我在处理金融数据时,希望用小箭头来突出显示一些事件发生的点(根据一个布尔值列表,表示事件是否发生)。所以,在我提到的例子中,事件列表会是 [False, False, True, False, True, False],但我想这只需要把这个列表和原始数据相乘,就能在正确的高度上得到标记。这里有一个更复杂的网页示例,可以给你一个视觉上的概念。谢谢!

1 个回答

2

在matplotlib这个库里,你可以使用文本注释来给你的图表添加说明。下面的代码展示了一个简单的例子,我在你的线性图的第三个点上添加了注释。显然,如果你在自己的代码中做这个,你可以更聪明地选择箭头指向的x和y坐标,以及文本的位置。

import matplotlib.pyplot as plt
import numpy as np

y = np.array([1,2,3,4,5,6])

f, ax = plt.subplots()

ax.plot(y, linestyle='None', marker='o')


for i in [2, 3, 4]:
    ax.annotate('', xy=(i-1, i), xytext=(i-1,i+0.5),
                arrowprops=dict(facecolor='black',
                                width=1,
                                shrink=0.1))

plt.margins(0.1)
plt.show()

编辑 我已经修改了代码,把文本注释改成了空字符串。

示例图

撰写回答