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

Python绘图移除图例中None,None问题求助

解决Python折线图中无效“None, None”图例问题

你遇到的问题是用pandas的groupby+agg处理数据后,绘制折线图出现了无效的“None, None”图例,以下是几种实用解决办法:

问题代码

plt.figure(figsize=(15,10.5))
df_select = employee_5years.drop(['Age','Years.of.Service','County.Code','YEAR','Tenure.Years','Assigned_Department'],axis=1)
df_select = df_select.loc[(df_select['Gender'] == 'F')]
df_select = df_select.loc[(df_select['Department'].str.contains('DEPARTMENT E'))]
x_select = df_select.groupby(['YEAR.year']).agg({'Base.Pay': ['median']})
x_select.plot(title='Female Salaries Increase by E Department in last 5 Years')
plt.ylabel('Median Base Salary')
plt.xlabel('Department E by Year')
plt.show()
x_select

解决方案

1. 直接移除图例

如果完全不需要图例,两种方式都能快速实现:

  • 绘图后清空图例:
plt.figure(figsize=(15,10.5))
df_select = employee_5years.drop(['Age','Years.of.Service','County.Code','YEAR','Tenure.Years','Assigned_Department'],axis=1)
df_select = df_select.loc[(df_select['Gender'] == 'F')]
df_select = df_select.loc[(df_select['Department'].str.contains('DEPARTMENT E'))]
x_select = df_select.groupby(['YEAR.year']).agg({'Base.Pay': ['median']})
x_select.plot(title='Female Salaries Increase by E Department in last 5 Years')
plt.ylabel('Median Base Salary')
plt.xlabel('Department E by Year')
plt.legend([])  # 清空图例
plt.show()
  • 调用plot时直接关闭图例:
x_select.plot(title='Female Salaries Increase by E Department in last 5 Years', legend=False)

2. 修复多级索引,让图例显示正常

出现“None, None”的核心原因是agg操作生成了多级列索引(列名是('Base.Pay', 'median')),把列名改成单一索引就能让图例显示正确名称:

plt.figure(figsize=(15,10.5))
df_select = employee_5years.drop(['Age','Years.of.Service','County.Code','YEAR','Tenure.Years','Assigned_Department'],axis=1)
df_select = df_select.loc[(df_select['Gender'] == 'F')]
df_select = df_select.loc[(df_select['Department'].str.contains('DEPARTMENT E'))]
x_select = df_select.groupby(['YEAR.year']).agg({'Base.Pay': ['median']})
# 重命名列,取消多级索引
x_select.columns = ['Median Base Pay']
x_select.plot(title='Female Salaries Increase by E Department in last 5 Years')
plt.ylabel('Median Base Salary')
plt.xlabel('Department E by Year')
plt.show()

3. 自定义图例名称

如果需要保留图例并修改显示内容,直接设置图例标签即可:

plt.figure(figsize=(15,10.5))
df_select = employee_5years.drop(['Age','Years.of.Service','County.Code','YEAR','Tenure.Years','Assigned_Department'],axis=1)
df_select = df_select.loc[(df_select['Gender'] == 'F')]
df_select = df_select.loc[(df_select['Department'].str.contains('DEPARTMENT E'))]
x_select = df_select.groupby(['YEAR.year']).agg({'Base.Pay': ['median']})
x_select.plot(title='Female Salaries Increase by E Department in last 5 Years')
plt.ylabel('Median Base Salary')
plt.xlabel('Department E by Year')
plt.legend(['女性中位数薪资'])  # 设置自定义图例名称
plt.show()

内容的提问来源于stack exchange,提问作者Data Science Analytics Manager

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:40:57