如何基于归一化DataFrame列绘制单个堆叠条形图?
基于归一化DataFrame绘制单个堆叠条形图的实现方案
你的数据是各部门发送行为的归一化占比,要绘制单个堆叠条形图(把所有部门占比堆叠成一个完整条形),可以用matplotlib直接实现,具体代码和说明如下:
import pandas as pd import matplotlib.pyplot as plt # 加载你的数据(如果已存在DataFrame可跳过此步骤) df = pd.DataFrame( {'sender_department': [0.441629, 0.288440, 0.244021, 0.013952, 0.007403, 0.004556]}, index=['Sales', 'Operations', 'Admin', 'IT', 'Engineering', 'Marketing'] ) # 初始化堆叠底部位置 bottom_pos = 0 # 为每个部门分配不同颜色 dept_colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b'] # 循环绘制每个堆叠块 for dept, color in zip(df.index, dept_colors): ratio = df.loc[dept, 'sender_department'] plt.bar(x=0, height=ratio, bottom=bottom_pos, color=color, label=dept) bottom_pos += ratio # 调整图表显示效果 plt.title('部门发送占比分布') plt.xticks([0], ['整体占比']) plt.ylabel('归一化占比') # 把图例放在图表外侧,避免遮挡 plt.legend(bbox_to_anchor=(1.02, 1), loc='upper left') plt.tight_layout() plt.show()
关键逻辑说明
- 用
bottom_pos变量控制每个堆叠块的起始高度,每绘制一个部门就更新底部位置,实现堆叠效果 - 单个堆叠条形图的x轴仅需一个类别,所以x坐标设为0即可
- 自定义颜色区分不同部门,图例放在外侧保证图表清晰
内容的提问来源于stack exchange,提问作者MarcinKamil
相关产品推荐
相关产品推荐

