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

使用plt.bar绘制堆叠柱状图时x轴重复值被自动去除如何解决

问题1解答

你当前直接提取Price列作为x值的方式不可行。matplotlib对数值型x坐标默认会按数值本身的大小定位,相同数值的柱子会被堆叠到同一个x坐标位置,不会为每行数据单独分配独立位置。你不需要将值转成字符串,但需要先为每行生成独立的位置索引作为绘图用的x坐标。

问题2解答

要实现x轴刻度数量和DataFrame行数完全一致,按以下步骤操作:

  • 生成从0开始、长度等于DataFrame行数的序列作为实际绘图的x坐标,保证每个行的柱子有独立的位置
  • 绘制第二个堆叠系列时添加bottom参数指定为第一个系列的数值,实现真正的堆叠效果,避免两个系列的柱子互相覆盖
  • 手动设置x轴的刻度标签为Price列的对应值

完整实现代码

import matplotlib.pyplot as plt
import pandas as pd

# 注意提前清理原数据中share_1列多余的小数点(比如0.2.、0.5.这类错误格式)
# 生成和df行数一致的独立x位置
x_pos = range(len(df))
y1 = df['share_1']
y2 = df['share_2']

# 绘制堆叠柱状图
plt.bar(x_pos, y1, label='share_1')
plt.bar(x_pos, y2, bottom=y1, label='share_2')

# 手动设置x轴刻度标签为Price列的取值
plt.xticks(x_pos, df['Price'])

# 其他可视化配置
plt.xlabel('Price')
plt.ylabel('Share')
plt.legend()
plt.show()

运行后x轴会显示和DataFrame行数一致的9个刻度,不会自动合并去重。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:15:07