Python 使用matplotlib打印数据框列时,图例为空

Python 使用matplotlib打印数据框列时,图例为空,python,pandas,matplotlib,legend,Python,Pandas,Matplotlib,Legend,当我绘制数据帧的两列(其中一列包含x值,另一列包含y值)时,我无法显示图例。这是因为图例调用中存在非句柄。但我没有弄清楚如何在数据帧之外创建这些句柄 plt.figure(num=None, figsize=(15, 6), dpi=80, facecolor='w', edgecolor='k') colordict = {'m':'blue', 'f':'red'} plt.scatter(x=df.p_age, y=df.p_weight, c=df.p_gender.apply(lam

当我绘制数据帧的两列(其中一列包含x值,另一列包含y值)时,我无法显示图例。这是因为图例调用中存在非句柄。但我没有弄清楚如何在数据帧之外创建这些句柄

plt.figure(num=None, figsize=(15, 6), dpi=80, facecolor='w', edgecolor='k')
colordict = {'m':'blue', 'f':'red'}

plt.scatter(x=df.p_age, y=df.p_weight, c=df.p_gender.apply(lambda x: colordict[x]))
plt.title('Weight distribution per age')
plt.xlabel('Age [months]')
plt.ylabel('individual weight [kg]')
plt.legend(title="Legend Title")
颜色词汇是这样的,我可以为两种性别选择不同的颜色。这很有效。我想要一个带有蓝色和红色圆点的图例,旁边是“男”、“女”。 我试过:

plt.legend(title="Legend Title", handles=(df.p_age,df.p_weight))

但这不起作用,因为句柄不能由系列组成。

源自找到的解决方案。此解决方案迭代地绘制每个类的绘图

fig, ax = plt.subplots()

for gender,color in colordict.items():
    scatter = ax.scatter(x=df.p_age, y=df.p_weight, c=color,label=gender)

ax.legend()
plt.show()
可能重复: