如何使用Matplotlib和Pandas将堆叠柱状图改为分组柱状图
实现方法
仅需修改df_month.plot方法的核心参数即可,其余原有配置保持不变就能和原堆叠图的x轴完全一致:
- 把参数
stacked=True改为stacked=False,pandas柱状图默认就是分组展示模式,关闭堆叠参数后就能生成你需要的分组柱状效果 - 可选添加
width参数调整每组柱子的总宽度,避免12个月份的柱子过于拥挤
修改后完整代码
import matplotlib.pyplot as plt import pandas as pd years=["ASD","MNG","KQR","MND","QST", "MNR"] dataavail={ "Jan":[20,20,30,19,10,21], "Feb":[20,13,10,18,15,30], "Mar":[20,20,10,15,18,30], "Apr":[20,20,10,15,18,0], "May":[20,20,10,15,18,0], "Jun":[20,20,10,15,18,0], "Jul":[20,20,10,15,18,0], "Aug":[20,20,10,15,18,45], "Sep":[20,20,10,15,18,0], "Oct":[20,20,10,15,18,0], "Nov":[20,20,10,15,18,0], "Dec":[20,20,0,0,0,0], } df_month = pd.DataFrame(dataavail, index=years) fig, ax1 = plt.subplots(1, figsize=(8, 5)) df_month.plot(kind='bar', stacked=False, width=0.75, colormap=plt.cm.tab20, ax=ax1) plt.legend(loc="upper right", ncol = 3,handlelength=1.5, borderpad=0.2, labelspacing=0.2) plt.xticks(rotation=0) plt.show()
内容的提问来源于stack exchange,提问作者manas
相关产品推荐
相关产品推荐

