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

28H*_*8H4 3 python matplotlib legend

我使用 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()
Run Code Online (Sandbox Code Playgroud)

Jul*_*ien 9

这个“黑客”应该有效:

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()
Run Code Online (Sandbox Code Playgroud)