如何转置数据以在Matplotlib中绘制正确的堆叠条形图
解决堆叠条形图绘制问题
你的问题出在数据结构与绘图逻辑不匹配——当前代码把index列(Yes/No/Dont know)当成了X轴,而你实际需要X轴对应1-17这些列名,每个X轴位置堆叠三个类别的数据。按以下步骤调整即可:
步骤1:调整数据结构
先把index列设为数据框的行索引,再转置数据,让X轴对应1-17,Y轴对应三个类别的数值(同时填充NaN值避免绘图报错):
# 将index列设为行索引 dfu.set_index('index', inplace=True) # 转置数据并填充NaN为0 dfu_transposed = dfu.T.fillna(0)
步骤2:绘制目标堆叠条形图
用转置后的数据集绘图,此时X轴自动对应1-17的列名,每个条形由Yes/No/Don't know三个部分堆叠:
ax = dfu_transposed.plot.bar(stacked=True, figsize=(12, 6)) # 优化图表标签 ax.set_xlabel('列名') ax.set_ylabel('数值') ax.set_title('按列名分组的堆叠条形图') # 显示图例标题 ax.legend(title='类别')
这样生成的图表就完全符合需求:X轴是1到17的列名,每个位置的条形由三个类别的数据堆叠而成。
内容的提问来源于stack exchange,提问作者user16239103
相关产品推荐
相关产品推荐

