Skip to content

MATLAB - 绘制误差条

MATLAB - 使用误差棒可视化数据不确定性

Section titled “MATLAB - 使用误差棒可视化数据不确定性”

在科学和统计分析中,数据点通常是带有一定不确定性的估计值。误差棒是这种变异性的图形表示,直观地提示数据的可靠性。它们对于透明地传达结果至关重要,通常表示标准差、标准误差或置信区间等度量。

MATLAB 的 errorbar 函数是一个多功能工具,用于创建包含这些关键可视化元素的折线图。

errorbar 函数允许进行广泛的自定义,从简单的对称误差到复杂的二维误差表示。

  • errorbar(y, err):绘制向量 y,并在每个点 y(i) 处添加长度为 2*err(i) 的对称垂直误差棒。
  • errorbar(x, y, err):绘制 y 相对于 x 的图,并添加对称垂直误差棒。
  • errorbar(x, y, neg, pos):绘制 y 相对于 x 的图,并添加非对称垂直误差棒。neg 指定每个点下方的长度,pos 指定上方长度。
  • errorbar(x, y, yneg, ypos, xneg, xpos):同时绘制垂直(非对称 yneg、ypos)和水平(非对称 xneg、xpos)误差棒。
  • errorbar(___, 'horizontal'):创建水平误差棒而非垂直误差棒。
  • e = errorbar(___):创建绘图并返回一个 ErrorBar 对象 e。此对象句柄是绘图创建后进行程序化定制的关键。

让我们看看这些语法在实践中如何工作。以下代码示例是独立的,可以直接运行。

绘制实验结果及其标准差。

% 示例数据:月平均气温和标准差
months = 1:6;
yData = [5.5, 8.2, 12.1, 15.8, 18.0, 21.3]; % 平均气温
yError = [1.2, 1.5, 1.3, 1.8, 1.6, 1.9]; % 标准差
figure; % 创建新的图形窗口
errorbar(months, yData, yError);
title('Monthly Average Temperature with Standard Deviation');
xlabel('Month');
ylabel('Temperature (°C)');
grid on;

预期输出说明:此代码生成一个折线图,显示六个月内温度上升的趋势。每个数据点都有一条等长地向上和向下延伸的垂直误差棒,表示该月的标准差。

此示例演示了非对称误差棒和使用名称-值对进行现代样式设置。

% 表示具有不同上限/下限的增长过程的数据
xData = 1:5;
yData = [10, 18, 23, 25, 26];
lowerError = [1.5, 2.0, 2.5, 2.0, 1.8]; % 误差下限
upperError = [3.0, 3.5, 2.8, 2.2, 1.5]; % 误差上限
figure;
errorbar(xData, yData, lowerError, upperError, ...
'LineStyle', '--', ...
'Marker', 'o', ...
'MarkerFaceColor', 'blue', ...
'Color', 'black', ...
'CapSize', 10, ...
'LineWidth', 1.5);
title('Growth Process with Asymmetric Confidence Interval');
xlabel('Time Point');
ylabel('Measurement');

预期输出说明:生成的图显示了由黑色虚线连接的五个数据点。每个点都是一个蓝色填充圆圈。垂直误差棒是非对称的,根据 lowerError 和 upperError 的值向上或向下延伸得更远。误差棒的末端带有大小为 10 磅的帽线。

示例 3:通过对象句柄进行程序化定制

Section titled “示例 3:通过对象句柄进行程序化定制”

捕获 ErrorBar 对象句柄允许您在绘图创建后修改它,这对于动态更新或复杂样式设置很有用。

% 来自两个不同实验组的数据
x = 1:10;
group1_y = 2*x + randn(1,10);
group1_err = 0.5 * ones(1,10) + rand(1,10);
group2_y = 1.8*x + 1.5 + randn(1,10);
group2_err = 0.5 * ones(1,10) + rand(1,10);
figure;
hold on; % 允许在同一坐标轴上绘制多个图
% 绘制组 1 并获取其句柄
e1 = errorbar(x, group1_y, group1_err, 'b-o');
% 绘制组 2 并获取其句柄
e2 = errorbar(x, group2_y, group2_err, 'r-s');
% 现在,使用句柄进行定制
e1.MarkerSize = 8;
e1.LineWidth = 2;
e1.DisplayName = 'Group 1';
e2.CapSize = 12;
e2.MarkerFaceColor = 'red';
e2.DisplayName = 'Group 2';
hold off;
legend('show');
title('Comparison of Two Experimental Groups');
xlabel('Dose');
ylabel('Response');
grid on;

预期输出说明:这生成一个包含两条不同线的图。第一条线是带有圆形标记的实心蓝色线。第二条是带有方形标记的实心红色线,这些标记填充为红色,并且误差棒的末端帽线更大。图例正确地标识了“组 1”和“组 2”,展示了如何在初始绘图调用后使用对象句柄设置显示名称和其他属性。

  • 始终标注误差含义:在图的标题或文本中,始终说明您的误差棒代表什么(例如,“误差棒表示均值的标准误差,n=5”)。
  • 使用名称-值对:对于样式设置,优先使用明确的名称-值对(例如'Color', 'red')而非旧的 LineSpec 字符串(例如'r'),以提高代码的可读性和可维护性。
  • 检查维度:确保您的数据向量(x、y)和误差向量(err、neg、pos)具有相同数量的元素,以避免错误。
  • 可访问性:对于出版级或演示图形,请使用独特的标记、线条样式和高对比度颜色,以确保图对所有人(包括色觉缺陷者)都可读。