如何在情节中将相同的图例(标签)设置为不同的散点?

时间:2019-09-12 19:27:37

标签: python python-3.x matplotlib legend

需要一些使用matplotlib / pylab处理图例的指南。

for xe, ye in zip(dist, liston):
    plt.scatter([xe] * len(ye), ye, s = 200, color = 'darkseagreen')

其中:

dist = [2.0, 4.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0]
liston = [[-46.6, -46.7, -53.0], [-52.4, -50.7, -51.0], [-54.2, -54.0, -52.8], [-53.3, -51.4, -54.2], [-56.8, -54.4, -52.4], [-55.5, -54.9, -55.7], [-59.1, -59.4, -57.0], [-58.4, -54.8, -58.8], [-56.7, -55.5, -62.3], [-56.2, -57.5, -59.1]]

我的绘图现在具有按距离(liston x dist),误差线和每距离度量的平均值(x轴)的点。我有一个图例,其中的“错误”和“均值”已启动并正在运行,但我无法通过分散点来实现。

由于我正在循环内运行散点图,因此如果我尝试在其中进行标记,我将得到10个相同的图例,这不是我想要的。(需要将我的10个散点图视为一个)

任何见解都会有所帮助!

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

我将摆脱循环并绘制单个散点图。

import matplotlib.pyplot as plt
import numpy as np

dist = [2.0, 4.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0]
liston = [[-46.6, -46.7, -53.0], [-52.4, -50.7, -51.0], [-54.2, -54.0, -52.8], 
          [-53.3, -51.4, -54.2], [-56.8, -54.4, -52.4], [-55.5, -54.9, -55.7], 
          [-59.1, -59.4, -57.0], [-58.4, -54.8, -58.8], [-56.7, -55.5, -62.3], 
          [-56.2, -57.5, -59.1]]

y = np.array(liston).T
x = np.tile(dist, len(y))

plt.scatter(x, y, s = 200, color = 'darkseagreen', label="MyLabel")
plt.legend()

plt.show()