我正在尝试使用特定的错误栏对scatterplot进行编程。我找到的唯一功能构建是
errorbar()
但这只能让我在y方向上制作带有错误栏的2D图。我要求的是一种用x和y方向的误差线绘制它的方法。
最后,我的目标是制作一个包含3个错误栏的3D散点图。
如果得到的图像是具有3d几何形状(坐标x,y,z,其尺寸与误差范围成比例的扩展)的3d图形为“标记”,那将是完美的。
我在搜索互联网时找到了这个页面:http://code.izzid.com/2007/08/19/How-to-make-a-3D-plot-with-errorbars-in-matlab.html
但不幸的是,他们只使用一个错误栏。
我的数据是由6个数组组成的,每个数组包含x,y或z坐标或我想要显示为错误栏的特定标准派生。
答案 0 :(得分:2)
code you posted看起来非常容易适应绘制所有三个误差线。试试这个(请注意,我也对它进行了调整,以便您可以像平常一样使用varargin
更改绘图的形状和颜色等,例如,您可以调用plot3d_errorbars(...., '.r')
:
function [h]=plot3d_errorbars(x, y, z, ex, ey, ez, varargin)
% create the standard 3d scatterplot
hold off;
h=plot3(x, y, z, varargin{:});
% looks better with large points
set(h, 'MarkerSize', 25);
hold on
% now draw the vertical errorbar for each point
for i=1:length(x)
xV = [x(i); x(i)];
yV = [y(i); y(i)];
zV = [z(i); z(i)];
xMin = x(i) + ex(i);
xMax = x(i) - ex(i);
yMin = y(i) + ey(i);
yMax = y(i) - ey(i);
zMin = z(i) + ez(i);
zMax = z(i) - ez(i);
xB = [xMin, xMax];
yB = [yMin, yMax];
zB = [zMin, zMax];
% draw error bars
h=plot3(xV, yV, zB, '-k');
set(h, 'LineWidth', 2);
h=plot3(xB, yV, zV, '-k');
set(h, 'LineWidth', 2);
h=plot3(xV, yB, zV, '-k');
set(h, 'LineWidth', 2);
end
使用示例:
x = [1, 2];
y = [1, 2];
z = [1, 2];
ex = [0.1, 0.1];
ey = [0.1, 0.5];
ez = [0.1, 0.3];
plot3d_errorbars(x, y, z, ex, ey, ez, 'or')