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

如何在同一柱状图中绘制多组数据(qtd与monetary)?

解决方案:将两组数据合并到同一柱状图

你当前代码调用了两次df.plot(),每次都会生成独立的图表,所以出现两个分开的柱状图。要合并只需调用一次绘图方法,并指定要展示的两个y轴列。考虑到qtd和monetary两组数据量级差异极大(前者0-20,后者最高近10000),直接单y轴展示会导致qtd的柱子几乎不可见,因此推荐使用双y轴方案:

双y轴合并柱状图(推荐)

import pandas as pd
import matplotlib.pyplot as plt
import random

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

df = pd.DataFrame(dict(
    year=range(2010,2021), 
    qtd=[int(random.random() * 20) for x in range(2010,2021)], 
    monetary=[int(random.random() * int(random.random() * 10000)) for x in range(2010,2021)])
)

fig, ax1 = plt.subplots()

# 左侧y轴绘制qtd
color = 'tab:blue'
ax1.set_xlabel('年份')
ax1.set_ylabel('数量(Qtd)', color=color)
df.plot(x="year", y='qtd', kind='bar', ax=ax1, color=color, position=0, width=0.4)
ax1.tick_params(axis='y', labelcolor=color)

# 右侧y轴绘制monetary
ax2 = ax1.twinx()
color = 'tab:orange'
ax2.set_ylabel('金额(Monetary)', color=color)
df.plot(x="year", y='monetary', kind='bar', ax=ax2, color=color, position=1, width=0.4)
ax2.tick_params(axis='y', labelcolor=color)

plt.title('年度数量与金额对比')
plt.legend(['数量(Qtd)', '金额(Monetary)'], loc='upper left')
plt.show()

单y轴合并柱状图(仅作参考)

如果不需要双y轴,仅需合并到同一图表,可直接调用一次df.plot()并指定两个y列,但qtd的柱子会因量级差异几乎被覆盖:

import pandas as pd
import matplotlib.pyplot as plt
import random

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

df = pd.DataFrame(dict(
    year=range(2010,2021), 
    qtd=[int(random.random() * 20) for x in range(2010,2021)], 
    monetary=[int(random.random() * int(random.random() * 10000)) for x in range(2010,2021)])
)

# 一次调用plot生成合并柱状图
df.plot(x="year", y=['qtd', "monetary"], kind='bar', figsize=(8, 4))
plt.title('年度数量与金额对比')
plt.xlabel('年份')
plt.ylabel('数值')
plt.legend()
plt.show()

关键说明

  • 双y轴方案通过twinx()创建共享x轴的第二个坐标轴,分别适配两组数据的量级;
  • 设置position和width参数让两组柱子并排显示,避免重叠;
  • 不同颜色区分两组数据,提升可读性。

内容的提问来源于stack exchange,提问作者LucasBorges-Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:45:41