有没有办法使用字符串列表注释散点图上的每个点?

时间:2017-11-05 13:51:53

标签: python matplotlib scatter annotate

我使用variable=plt.scatter(test1,test2)制作了散点图,其中test1test2是与x和y对应的列表。

有没有办法用我创建的字符串或变色列表来注释每个点?

我发现:

for i, txt in enumerate(variablelabel):
    variable.annotate(txt, (test1[i],test2[i]))

其中variablelabel被定义为我的字符串列表。不幸的是,这似乎没有注释我的散点图。

或者,我发现你可以使用类似的代码添加箭头:

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()

但这会产生我不想要的大箭头。我只想要列表中的字符串。

很抱歉,如果我不是很清楚。

1 个答案:

答案 0 :(得分:0)

您可以使用字符串列表注释每个点。使用matplotlib.annotate是解决方案。不过,您可以在matplotlib.collections.PathCollection对象(matplotlib.scatter的结果)而不是matplotlib.axes.Axes对象上调用annotate

在您的代码中:

variable = plt.scatter(test1, test2)
for i, txt in enumerate(variablelabel):
    variable.annotate(txt, (test1[i], test2[i]))

variablematplotlib.collections.PathCollection。而是使用以下内容:

plt.scatter(test1, test2)
for i, txt in enumerate(variablelabel):
    plt.annotate(txt, (test1[i], test2[i]))

你应该得到这样的东西:

enter image description here

我希望这会对你有所帮助。