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

Matplotlib绘制X轴不同的堆叠柱状图时数组不匹配问题

解决Matplotlib堆叠柱状图数据对齐问题

要解决两组数据尺寸不匹配的问题,核心是把第二组数据(rates1/counts1)按照主数据的rate标签自动补0对齐,不用硬编码。具体步骤如下:

步骤1:将第二组数据转为字典映射

先把rates1和counts1组合成字典,快速通过rate值找到对应的count,避免手动匹配:

# 构建rate到count的映射字典
rate_count_map = dict(zip(rates1, counts1))

步骤2:生成对齐后的counts数组

遍历主数据的rates列表,对每个rate值,从字典中取出对应的count,没有的就填0,得到的新数组和主counts长度完全一致:

# 生成对齐后的counts1数组
counts1_aligned = [rate_count_map.get(rate, 0) for rate in rates]

步骤3:绘制堆叠柱状图

用matplotlib的bar函数,主数据作为基底,上层数据通过bottom参数指定堆叠在主数据上方:

import matplotlib.pyplot as plt

rates = [4, 4.1, 4.2, 4.3, 4.4, 4.5]
counts = [12, 17, 22, 9, 12, 18]

rates1 = [4.3, 4.4]
counts1 = [24, 17]

# 数据对齐处理
rate_count_map = dict(zip(rates1, counts1))
counts1_aligned = [rate_count_map.get(r, 0) for r in rates]

# 绘制堆叠柱状图
x = range(len(rates))  # 用索引作为x轴位置
plt.bar(x, counts, label='基底数据')
plt.bar(x, counts1_aligned, bottom=counts, label='堆叠数据')

# 设置x轴标签为rate值
plt.xticks(x, rates)
plt.xlabel('Rate')
plt.ylabel('Count')
plt.legend()
plt.show()

这样处理后,堆叠数据会准确对应到对应的rate位置,缺失的rate自动补0,不会出现尺寸不匹配的报错,也不用手动硬编码补0的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:22:41