我正在尝试使用特定的误差线对散点图进行编程。我发现的唯一内置函数是
errorbar()
但这只能让我在 y 方向上绘制带有误差条的二维图。我要的是一种在 x 和 y 方向上用误差线绘制它的方法。
最后,我的目标是制作一个带有 3 个误差条的 3D 散点图。
如果生成的图像是具有 3d 几何形状的 3d 图(坐标 x、y、z,尺寸扩展与误差线成正比)作为“标记”,那就完美了。
我在网上搜索时发现了这个页面:http://code.izzid.com/2007/08/19/How-to-make-a-3D-plot-with-errorbars-in-matlab.html
但不幸的是,他们只使用一个错误栏。
我的数据是一组 6 个数组,每个数组包含 x、y 或 z 坐标或我想显示为错误栏的特定标准推导。
最佳答案
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')
关于matlab - 在 matlab 中具有不同误差条的多维(2d 更好 3d)散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23654296/