You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用matplotlib为合并后的pandas DataFrame绘制并列分组柱状图

分组并排柱状图修改方案

问题原因

当前代码的柱状图呈现堆叠视觉效果,是因为两次ax.bar()调用使用了完全相同的x轴位置,两组柱子直接重叠在一起。

修改方法

需要调整两组柱子的x轴位置,使其向左右偏移,实现并排显示,具体修改步骤如下:

  • 自定义柱子宽度,通常设置为0.3~0.4之间即可
  • 将分类key转换为数值型坐标序列,作为x轴基准位置
  • 两组柱子分别向左右偏移半个宽度的位置绘制
  • 重新设置x轴刻度标签为原始的key值

完整修改后代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)
df1 = pd.DataFrame({
    'key':  ['A', 'B', 'C', 'D'],
    'value':[ 10  ,6,   6,   8]})
df2 = pd.DataFrame({
    'key':  ['B', 'D', 'A', 'F'],
    'value':[ 3,   5,   5,  7]})

df3 = pd.merge(df1, df2, how='inner', on=['key'])
print(df1)
print(df2)
print(df3)

fig, ax = plt.subplots(figsize=(12, 8))
# 新增修改部分开始
bar_width = 0.35
# 生成数值型x基准坐标
x = np.arange(len(df3['key']))
# 两组柱子分别偏移绘制
b1 = ax.bar(x - bar_width/2, df3['value_x'], width=bar_width, label='df1数值')
b2 = ax.bar(x + bar_width/2, df3['value_y'], width=bar_width, label='df2数值')
# 重置x轴刻度为原始key
ax.set_xticks(x)
ax.set_xticklabels(df3['key'])
# 增加图例区分两组数据
ax.legend()
# 新增修改部分结束

pngname = "demo.png"
fig.savefig(pngname, dpi=fig.dpi)
print("[[./%s]]"%(pngname))

运行后即可得到两组柱子并排显示的分组柱状图效果。


内容的提问来源于stack exchange,提问作者lucky1928

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:54:02