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

如何在Python柱状图中对X轴再进行一次划分?

Python实现X轴二级划分图表方案

以下是用matplotlib实现X轴二次划分的具体代码,你可以根据自身数据调整适配:

import matplotlib.pyplot as plt
import numpy as np

# 模拟数据
sub_labels = ["A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3"]  # X轴子类别标签
values = [3, 5, 4, 6, 8, 7, 2, 4, 3]  # 对应数据值
group_sizes = [3, 3, 3]  # 每个主类别包含的子类别数量
group_labels = ["类别A", "类别B", "类别C"]  # X轴主类别标签

# 绘制基础柱状图
x = np.arange(len(sub_labels))
width = 0.6
fig, ax = plt.subplots(figsize=(10, 6))
bars = ax.bar(x, values, width)

# 设置底层子类别X轴
ax.set_xticks(x)
ax.set_xticklabels(sub_labels)

# 添加顶层主类别划分(二级X轴)
group_centers = np.cumsum(group_sizes) - group_sizes/2  # 计算每个主类别的中心位置
ax2 = ax.twiny()  # 创建双X轴
ax2.set_xlim(ax.get_xlim())
ax2.set_xticks(group_centers)
ax2.set_xticklabels(group_labels)
# 隐藏二级轴的刻度线与顶部边框,仅保留标签
ax2.tick_params(axis='x', length=0)
ax2.spines['top'].set_visible(False)

# 给柱状图添加数值标签
for bar in bars:
    height = bar.get_height()
    ax.text(bar.get_x() + bar.get_width()/2., height,
            f'{height}', ha='center', va='bottom')

plt.title("带二级X轴划分的图表")
plt.tight_layout()
plt.show()

如果你的图表是折线图或其他类型,核心逻辑一致:先设置底层子类别X轴,再通过twiny()创建顶层主类别轴,调整刻度位置对应到每个分组的中心即可。若使用seaborn库,也可借助catplot的分组参数辅助实现,但上述matplotlib方法更直接适配X轴二次划分的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:12:15