如何按gender分类列值设置折线颜色,绘制分性别薪资均值折线图
解决方法
你原代码的问题是仅对job单字段分组,计算得到的是每个岗位对应的全量用户平均薪资,只有一维数据,自然只能画出一条折线,直接传入color参数无法实现按性别拆分折线的需求。
方案1:Pandas 原生实现
分组时同时传入job和gender两个字段,再通过unstack将性别维度转为列,即可自动生成对应不同性别的多条折线:
# 按岗位、性别分组计算平均薪资,将性别转为列索引后绘图 df1.groupby(['job', 'gender'])['salary'].mean().unstack().plot(kind='line')
如果需要自定义两种性别的颜色,可补充color参数:
df1.groupby(['job', 'gender'])['salary'].mean().unstack().plot( kind='line', color=['#2563eb', '#ea580c'] # 两个颜色分别对应两个性别分类 )
绘图结果会自动生成图例标注不同性别对应的折线。
方案2:Seaborn 实现(更便捷)
用seaborn的lineplot可以直接通过hue参数指定按性别拆分折线,无需手动聚合:
import seaborn as sns # x为岗位,y为薪资,hue按性别拆分,estimator指定计算均值,关闭置信区间显示 sns.lineplot(data=df1, x='job', y='salary', hue='gender', estimator='mean', errorbar=None)
内容的提问来源于stack exchange,提问作者user4172070
相关产品推荐
相关产品推荐

