pandas绘制堆叠水平条形图y轴标签重复与配色修改问题
pandas堆叠水平条形图冗余y轴标签移除与配色修改方案
问题描述
- 基于DataFrame的Audience列值计数结果绘制堆叠水平条形图时,y轴重复显示两次Audience标签
- 原有实现代码:
DFGroup.Audience.value_counts().sort_values().unstack('Key').plot(kind = 'barh', stacked = True)
- 额外需求:自定义图表配色方案
原因说明
重复标签来自value_counts()生成的Series自带的索引名,pandas调用plot绘图时会自动将索引名渲染为y轴标签,和分类标签旁的Audience文字重复,属于pandas默认渲染的冗余内容。
解决代码
直接通过绘图返回的坐标轴对象清空y轴标签即可,同时通过绘图自带参数修改配色:
import matplotlib.pyplot as plt # 绘制堆叠水平条形图 ax = DFGroup.Audience.value_counts().sort_values().unstack('Key').plot( kind="barh", stacked=True, # 配色修改:可替换为matplotlib内置色板名,或传入自定义十六进制颜色列表 colormap="tab20c", # 自定义纯色方案示例:color = ["#4e79a7", "#f28e2b", "#e15759", "#76b7b2"] ) # 移除y轴重复的Audience标签 ax.set_ylabel("") # 可选美化配置 ax.legend(title="分类Key") plt.tight_layout() plt.show()
配置说明
- 移除冗余标签核心逻辑:拿到plot方法返回的Axes对象,调用
set_ylabel("")把自动生成的y轴标签置空,不会影响y轴上的分类刻度显示 - 配色配置:
- 用内置连续/离散色板时,给
colormap传入matplotlib支持的色板名称即可,常用可选值有Set3、Pastel1、viridis、coolwarm - 需要完全自定义颜色时,去掉
colormap参数,改用color参数传入和堆叠类别数量匹配的颜色值列表
- 用内置连续/离散色板时,给
内容的提问来源于stack exchange,提问作者Martha
相关产品推荐
相关产品推荐

