当前位置:首页>python>豆包AI之Python 绘制带断裂的柱状图(解决数值差距过大问题)

豆包AI之Python 绘制带断裂的柱状图(解决数值差距过大问题)

  • 2026-10-11 08:15:00
豆包AI之Python 绘制带断裂的柱状图(解决数值差距过大问题)

    当柱状图中部分数值极大、其余数值极小时,小数值会被压缩得几乎看不见,这时候需要给Y 轴做断裂(截断),把超大数值和小数值分成两段展示,让小数值清晰可见。

    用 python的Matplotlib 实现,这是 Python 最常用的绘图库,代码可直接运行,效果如下:顶部展示极大数值;底部展示极小数值。

完整代码:

import matplotlib.pyplot as pltimport numpy as np# ---------------------- 1. 准备数据(模拟数值差距极大的场景) ----------------------categories = ['A', 'B', 'C', 'D', 'E']  # 类别values = [15, 12, 1000, 8, 11]         # 数值:C=1000(极大),其余都是个位数# ---------------------- 2. 创建断裂的Y轴画布(上下两个子图) ----------------------fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6), sharex=True)# 绘制柱状图(两个子图都画,实现视觉连贯)ax1.bar(categories, values, color='#2E86AB', width=0.6)ax2.bar(categories, values, color='#2E86AB', width=0.6)# ---------------------- 3. 设置Y轴断裂范围(核心步骤) ----------------------# 上方子图:显示大数值区间ax1.set_ylim(950, 1050)  # 只显示950~1050的范围(容纳C=1000)# 下方子图:显示小数值区间ax2.set_ylim(0, 20)      # 只显示0~20的范围(容纳其余小数值)# ---------------------- 4. 隐藏中间边框,添加断裂符号 ----------------------# 隐藏上方子图的底部边框、下方子图的顶部边框ax1.spines['bottom'].set_visible(False)ax2.spines['top'].set_visible(False)# 隐藏顶部子图的x轴刻度(避免重复)ax1.tick_params(axis='x', bottom=False)# 添加断裂符号(//),让断裂处更直观d = 0.015  # 断裂符号的倾斜度kwargs = dict(transform=ax1.transAxes, color='black', clip_on=False)ax1.plot((-d, +d), (-d, +d), **kwargs)        # 左上角断裂线ax1.plot((1 - d, 1 + d), (-d, +d), **kwargs)  # 右上角断裂线kwargs.update(transform=ax2.transAxes)ax2.plot((-d, +d), (1 - d, 1 + d), **kwargs)  # 左下角断裂线ax2.plot((1 - d, 1 + d), (1 - d, 1 + d), **kwargs)  # 右下角断裂线# ---------------------- 5. 添加图表标题和标签 ----------------------fig.suptitle('带断裂的柱状图(数值差距过大优化)', fontsize=14, fontweight='bold')ax2.set_xlabel('类别', fontsize=12)ax2.set_ylabel('数值', fontsize=12)# 调整布局,防止标签重叠plt.tight_layout()plt.show()
效果图
点分享
点收藏
点点赞
点在看

最新文章

随机文章