大家好,我还有一个关于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()
情节是:
现在,我想在此图像的每个点上放置一些标签,例如:
有可能吗?预先感谢您的帮助。
答案 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()
您可以通过使用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'))