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

如何修改Python柱状图的横轴交叉点至数值1?

调整分组柱状图的基准线至1的实现方法

要实现把柱状图的基准线从默认0改成1,核心是借助matplotlib的底层配置(因为pandas绘图依赖matplotlib),步骤如下:

  • 预处理数据:将DataFrame中的所有数值减去1,这样原数值1变为0(对应新的基准线),小于1的数值转为负数(向下延伸),大于1的转为正数(向上延伸)
  • 绘制分组柱状图:用处理后的数据绘图
  • 调整坐标轴显示:把y轴刻度的0替换为1,其他刻度按原数值对应调整
  • 移动y轴脊柱(轴线)到新基准线位置,并添加参考线

代码示例

假设你的原始DataFrame是df,包含分组数据:

import pandas as pd
import matplotlib.pyplot as plt

# 示例数据
data = {"Group1": [0.8, 1.2, 1.5], "Group2": [1.1, 0.9, 1.3]}
df = pd.DataFrame(data, index=["A", "B", "C"])

# 数据预处理:减去1,偏移基准线
df_adj = df - 1

# 绘制分组柱状图
ax = df_adj.plot(kind="bar", figsize=(8, 6))

# 调整y轴刻度:将刻度值加1,还原为原始数据的数值显示
yticks = ax.get_yticks()
ax.set_yticklabels([f"{tick + 1:.1f}" for tick in yticks])

# 移动底部轴线(x轴)到y=0的位置,对应原始数据的1
ax.spines["bottom"].set_position(("data", 0))
# 隐藏顶部和右侧的冗余轴线
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)

# 添加水平参考线(可选,更清晰标记基准线)
ax.axhline(y=0, color="black", linewidth=1)

# 设置图表标签
ax.set_title("分组柱状图(基准线为1)")
ax.set_ylabel("数值")
ax.set_xlabel("类别")

plt.tight_layout()
plt.show()

关键细节说明

  • df - 1:通过数据偏移,把柱状图的默认基准线0映射到原始数据的1,这是实现柱状图上下延伸的核心操作
  • ax.spines["bottom"].set_position(("data", 0)):将x轴(底部轴线)移动到处理后数据的y=0位置,对应原始数据的1,实现你需要的横轴交叉点效果
  • 调整y轴刻度标签是为了让图表显示的数值和原始数据一致,避免用户混淆偏移后的数据

内容的提问来源于stack exchange,提问作者A. Gale

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:56:05