如何在gnuplot中并排绘制带误差棒的两个文件数据
解决误差棒重叠并并排显示的方案
刚好碰到过类似的需求!要解决两组数据误差棒重叠的问题,核心思路是给同一X值对应的两组数据添加微小的X轴偏移量,让它们在坐标轴上并排展示,同时保留原始X刻度的显示。下面用Python的Matplotlib库给你实现完整的方案,完全匹配你的数据:
步骤1:整理数据并导入依赖库
首先把你的数据用数组存储,同时导入绘图需要的库:
import matplotlib.pyplot as plt import numpy as np # 你的Archive 1数据:X值、Y均值、误差值 archive1 = np.array([ [10, 0.15127, 0.0986], [30, 0.14606, 0.10022], [60, 0.16739, 0.10298] ]) # 拆分列数据 x1, y1, err1 = archive1[:, 0], archive1[:, 1], archive1[:, 2] # 你的Archive 2数据:X值、Y均值、误差值 archive2 = np.array([ [10, 0.19177, 0.10253], [30, 0.17864, 0.12178], [60, 0.18111, 0.11272] ]) # 拆分列数据 x2, y2, err2 = archive2[:, 0], archive2[:, 1], archive2[:, 2]
步骤2:添加X轴偏移量
设置一个合适的偏移量(可以根据图表宽度调整),让两组数据在同一X刻度下左右分开:
# 偏移量:数值越小,两组数据靠得越近;反之越远 offset = 1.2 x1_shifted = x1 - offset # Archive1的X向左偏移 x2_shifted = x2 + offset # Archive2的X向右偏移
步骤3:绘制并排误差棒
用errorbar函数绘制带正负误差的误差棒,同时显示中点标记:
plt.figure(figsize=(8, 5)) # 绘制Archive1的误差棒:圆形标记+实线,误差棒带小帽子 plt.errorbar( x1_shifted, y1, yerr=err1, fmt='o-', capsize=6, color='#1f77b4', label='Archive 1' ) # 绘制Archive2的误差棒:方形标记+实线,误差棒带小帽子 plt.errorbar( x2_shifted, y2, yerr=err2, fmt='s-', capsize=6, color='#ff7f0e', label='Archive 2' ) # 配置图表细节 plt.xticks([10, 30, 60]) # 强制显示原始X刻度 plt.xlabel('X Value') plt.ylabel('Y-Mean') plt.title('Comparison of Y-Mean with Error Bars') plt.legend() plt.grid(True, alpha=0.3) # 添加浅色网格,方便对比 plt.show()
关键细节说明
yerr=err:指定误差值,默认会绘制正负双向的误差棒,同时显示中点的均值标记capsize:控制误差棒两端小帽子的长度,让误差范围更清晰fmt:控制标记样式和线条样式,比如o-是圆形标记+实线,s-是方形标记+实线,方便区分两组数据- 偏移量
offset:可以根据你的图表尺寸灵活调整,确保误差棒不重叠且视觉美观
内容的提问来源于stack exchange,提问作者Danilo Renato De Assis
相关产品推荐
相关产品推荐

