matlab - 在 matlab 中具有不同误差条的多维(2d 更好 3d)散点图

标签 matlab 3d 2d scatter-plot

我正在尝试使用特定的误差线对散点图进行编程。我发现的唯一内置函数是

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/

相关文章:

performance - 快速找到图像中最接近的非黑色像素

matlab - 如何使用 Matlab 快速获得均方误差?

Python 网格数据 网格网格

java四元数3D旋转实现

.net - 使用 .NET 的跨平台图形 3D

java - 如何在基于图 block 的游戏中保存 map 数据

java - 如何在 MATLAB 中调用简单的 "Hello World"Java 程序?

matlab - 如何将 bsxfun 与 linspace [1 5] -> [1 2 3 5 6 7] 一起使用

java - 在 OpenGL ES (Android) 中使用带有纹理的索引缓冲区有什么意义吗?

arrays - 构建成功,但堆已损坏。使用二维数组