Matplotlib: 如何将散点图和线图合并为一个图例条目

3
我使用ax.scatter()绘制数据点,并使用ax.plot()连接数据点。
如何创建一个公共的条目在图例中,该条目将数据点的标记与拟合线组合起来?我想获得一个类似于ax.plot(x,y,'-o',label ='abc')的图例条目。
我创建了以下最小示例:
import matplotlib.pyplot as plt
import numpy as np

x_scatter = np.linspace(0,10,10)
x_line = np.linspace(0,10,100)

fig, ax = plt.subplots()

for i in range(5):
    ax.scatter(x_scatter, np.sin(x_scatter) + i, label = i)
    ax.plot(x_line, np.sin(x_line)+i)

plt.legend(loc='best')
plt.show()
1个回答

9
这个“hack”应该能行:
import matplotlib.pyplot as plt
import numpy as np

x_scatter = np.linspace(0,10,10)
x_line = np.linspace(0,10,100)

fig, ax = plt.subplots()
prop = ax._get_lines.prop_cycler

for i in range(5):
    color = next(prop)['color']
    ax.scatter(x_scatter, np.sin(x_scatter) + i, color=color)
    ax.plot(x_line, np.sin(x_line)+i, color=color)
    ax.plot([], [], '-o', color=color, label = i)

plt.legend(loc='best')
plt.show()

这太棒了。 - Omar AlSuwaidi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接