如何将图例放在情节内的点中?

时间:2018-09-26 19:34:10

标签: python matplotlib

大家好,我还有一个关于matplotlib中的图例的问题:

我的代码如下:

x=[1,2,3,-4,-5]
y=[5,-3,6,7,-2]

plt.plot([x],[y], marker='o', markersize=6, color="green")
plt.grid()
plt.axhline(y=0.0,color='black',alpha=0.3)
plt.axvline(x=0.0,color='black',alpha=0.3)
plt.xlim(-7,7)
plt.ylim(-9,9)
plt.show()

情节是:

Plot

现在,我想在此图像的每个点上放置一些标签,例如:

plot2

有可能吗?预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

使用plt.annotate

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = ax.plot(t, s, lw=2)

ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
            arrowprops=dict(facecolor='black', shrink=0.05),
            )

ax.set_ylim(-2,2)
plt.show()

enter image description here

您可以通过使用arrowprops参数来忽略箭头并更改其属性。

对于多个点,只需做一个循环即可:

for label, x, y in zip(labels, data[:, 0], data[:, 1]):
plt.annotate(
    label,
    xy=(x, y), xytext=(-20, 20),
    textcoords='offset points', ha='right', va='bottom',
    bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=0.5),
    arrowprops=dict(arrowstyle = '->', connectionstyle='arc3,rad=0'))

enter image description here