在matplotlib中标记特定点
有一个基本的图表,如下所示:
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()
编辑 我已经修改了代码,把文本注释改成了空字符串。