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

如何在Python中实现点与点之间的连线绘制?

用Matplotlib绘制带误差棒的分组条形图

你要画的是带误差棒的分组条形图,适合对比不同类别下多个子组的统计数据(比如均值±标准差)。下面是完整的实现代码,附带关键步骤说明:

import matplotlib.pyplot as plt
import numpy as np

# 1. 准备数据
categories = ['类别A', '类别B', '类别C', '类别D']  # X轴的分类标签
group_names = ['子组1', '子组2', '子组3']  # 每个分类下的子组名称
# 每个子组在对应分类下的数值
group_data = [
    [20, 25, 18, 22],
    [15, 18, 16, 20],
    [28, 22, 25, 30]
]
# 每个子组的误差值(比如标准差、标准误)
error_data = [
    [2, 3, 1.5, 2.5],
    [1, 2, 1.2, 1.8],
    [3, 2.5, 2, 3.5]
]

# 2. 设置条形宽度与位置
bar_width = 0.25
x = np.arange(len(categories))  # 生成分类对应的基础X坐标

# 3. 绘制分组条形与误差棒
fig, ax = plt.subplots(figsize=(10, 6))
for idx, (name, data, error) in enumerate(zip(group_names, group_data, error_data)):
    # 错开每个子组的条形位置,添加误差棒
    ax.bar(x + idx*bar_width, data, width=bar_width, label=name, yerr=error, capsize=5)

# 4. 调整图表细节
ax.set_xlabel('类别', fontsize=12)
ax.set_ylabel('数值', fontsize=12)
ax.set_title('分组条形图(带误差棒)', fontsize=14)
# 将X轴刻度移到每组条形的中间位置
ax.set_xticks(x + bar_width)
ax.set_xticklabels(categories)
# 添加图例
ax.legend()

# 自动调整布局,避免标签被截断
plt.tight_layout()
plt.show()

关键细节说明

  • 条形位置错开:通过x + idx*bar_width计算每个子组的条形位置,避免不同子组的条形重叠
  • 误差棒控制:yerr参数传入误差数据,capsize设置误差棒两端小横线的长度,提升可读性
  • X轴刻度优化:把刻度位置调整到每组条形的中间,让分类标签与对应条形组对齐,更直观

你可以根据自己的实际数据替换categories、group_data和error_data,就能生成和目标图结构一致的可视化结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:55:22