首页 > 解决方案 > 如何将图例放在情节中的点中?

问题描述

大家好,我有下一个关于 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()

情节是:

阴谋

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

情节2

这可能吗?在此先感谢您的帮助。

标签: pythonmatplotlib

解决方案


使用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'))

在此处输入图像描述


推荐阅读