如何在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
相关产品推荐
相关产品推荐

