You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas绘制多折线图时legend显示错误:分组名未出现在图例中

错误原因

你直接对groupby('Name')返回的分组对象调用plot方法时,pandas会为每个分组的子数据集单独执行绘图逻辑,每个子数据集的y轴取值都是Frequency列,所以默认会把y列的列名作为对应折线的图例标签,而不会自动复用分组对应的Name列取值,最终就会出现图例全显示为Frequency的问题。

修复方案

方案1:遍历分组手动指定标签

你可以手动迭代分组对象,绘图时显式指定每个折线的label为对应的Name值:

fig, ax = plt.subplots(figsize=(10,8))
for user_name, group_data in df.groupby('Name'):
    group_data.plot(
        kind='line', 
        x="Position", 
        y="Frequency", 
        ax=ax, 
        label=user_name # 手动指定图例标签为分组的用户名
    )
plt.legend(title="用户名称") # 可按需给图例添加标题
plt.show()

方案2:使用seaborn简化实现

如果接受引入seaborn库,可以直接通过hue参数自动按Name列分组绘图并生成对应图例,代码更简洁:

import seaborn as sns

fig, ax = plt.subplots(figsize=(10,8))
sns.lineplot(
    data=df, 
    x="Position", 
    y="Frequency", 
    hue="Name", # 按Name列分组着色、生成图例
    ax=ax
)
plt.show()

内容的提问来源于stack exchange,提问作者Math

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:15:03