【问题标题】:Draw error bars in Matlab在 Matlab 中绘制误差线
【发布时间】:2017-05-05 12:57:29
【问题描述】:

我在 MATLAB 中创建了一个包含五个点的示例散点图,如下所示:

x = linspace(0,pi,5);
y = cos(x);
scatter(x,y);

在我的例子中,每个点的 y 值应在如下定义的预定义范围内:

y_limits = {[0.9 1.1], [0.6 0.8], [-0.1 0.1], [-0.8 -0.6], [-1.1 -0.9]};

例如,x = 0 处的点1 的y 值应在[0.9 1.1] 范围内。

我想以某种方式在同一个图中很好地绘制五个垂直边界,也许是通过

  • 5 条垂直线,端点位于各自的两个范围内
  • 两个边界之间的五个填充垂直区域
  • 其他可能更合适的东西

我想得到一些在这种图形表示方面比我更有经验的人的建议或示例代码。

【问题讨论】:

  • 我有点困惑,因为x=0 处的y 值是y=cos(0)=1,所以绝对不在[0.1, 0.2] 范围内?
  • @Wolfie 你是对的。我只是想提供一些示例数据,而不关心数学正确性。我已经调整了范围。

标签: matlab plot matlab-figure scatter-plot


【解决方案1】:

您可以使用errorbar function 在一行中完成此操作

% Your example variables
x = linspace(0,pi,5)';
y = cos(x);
y_limits = [0.9, 1.1; 0.6, 0.8; -0.1, 0.1; -0.8, -0.6; -1.1, -0.9];

% Plot
errorbar(x, y, y - y_limits(:,1), y_limits(:,2) - y, 'x');
% Format: (x, y, negative error, positive error, point style)

结果:


编辑,您可以在调用errorbar 时设置绘图的线属性。例如,您可以使用较大的蓝色圆形标记和较粗的红色误差线 使用:

errorbar(x, y, y - y_limits(:,1), y_limits(:,2) - y, 'o', 'MarkerSize', 2, 'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b', 'Color', 'r', 'LineWidth', 1);

注意这些图像我使用grid on 添加网格。第二个结果:

【讨论】:

  • errorbar 命令抛出异常。矩阵维度似乎存在问题。
  • 抱歉,请看我的编辑,我打算转置x(使用撇号),以便y 是列向量,可以从y_limits 的列中减去。跨度>
  • 我喜欢那个。是否可以将错误栏的颜色更改为红色,同时保持十字为蓝色?
  • 我想通了。您可以在答案中添加以下代码:set(eb, 'Marker', 'o', 'MarkerSize', 10, 'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b', 'Color', 'r', 'LineWidth', 2)
  • 您不必使用set,尽管这是一种方法!查看我的编辑,如果它满足您的需要,请考虑将其标记为已接受:)
【解决方案2】:

使用line 命令创建行。

for i = 1:length(x)
line([x(i) x(i)], [y_limits{i}]);
end

填充区域可以使用patch 或fill 完成。有必要对限制进行一些重新排序,以便给定的顺序遵循要填充的区域周围的路径。一个不错的技巧是在这些填充区域上使用alpha 命令来创建透明度。

hold on    
y_corners = reshape([y_limits{:}], 2, length(x)).'; %make an array
y_corners = [y_corners(:,1); flipud(y_corners(:,2))]; %corners follow a path around the shape
fill([x fliplr(x)], y_corners, 'blue');
alpha(0.5);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    相关资源
    最近更新 更多