0

我使用 MATLABplot3函数制作了下图。

在此处输入图像描述

这个数字不好。因为,我认为,读者很难从这个数字估计坐标。点高度(Z 值)太难从图中估计。我的数字中缺少什么使其难以解释?


玩数据:可视化数据在这里。生成我当前图形的函数在这里。评论 mArrow3 调用,或从此处下载。

4

4 回答 4

3

为了更好地查看高度,您可以使用stem3从地板到每个点的垂直线。patch您可以在零高度处使用半透明来增强表示以突出显示地板

% // Random data
x = -20+50*rand(1,50);
y = 150*rand(1,50);
z = -5+10*rand(1,50);

%// With plot
figure
plot3(x,y,z,'.','markersize',8)
grid on
axis equal
view(-33, 14)

%// With stem3 and patch
figure
stem3(x,y,z,'.','markersize',8)
grid on
hold on
patch([-20 30 30 -20], [0 0 150 150], [0 0 0 0], 'k', ...
    'edgecolor', [.5 .5 .5], 'FaceAlpha' , .1)
axis equal
view(-33, 14)

在此处输入图像描述 在此处输入图像描述

于 2015-07-21T14:18:40.763 回答
1

我认为问题可能是此类图所固有的:数据的 0d 点很难从透视角度解释,您的大脑无法破译数据点所在的深度。例如,在我看来,您在 z=0 和 x=15 以上没有数据点,这显然是错误的,但我的大脑将您的大部分点归因于 z=-5 平面。

除非您的数据点具有随距离成比例变化的有限体积(这不能用 matlab 完成,而且可能无论如何也无济于事),否则您可能需要重新考虑您的可视化方式。如果有 3 个图,每个图都带有沿 x、y 和 z 轴的相机?

编辑Luis Mendo 的建议让我认为在尝试回答问题时我应该有一个更开放的心态:)

于 2015-07-21T14:06:36.507 回答
1

您还可以使用不同的颜色/标记/点大小来区分数据中的各个区域。例如,z低于 0 的值为红色,高于 0 的值为绿色。scatter3这是一个使用4 个不同区域的简单示例。感谢 Luis Mendo 提供的虚拟数据。

clc;clear;close all


% // Random data...thanks Luis Mendo
x = -20+50*rand(1,50);
y = 150*rand(1,50);
z = -5+10*rand(1,50);

%// Get indices for various regions in your data
region1 = find(z>=-4 & z<-2);
region2 = find(z>=-2 & z<0);
region3 = find(z>=0 & z<2);
region4 = find(z>=2 & z<4);

%// Draw each region with its own color/size
scatter3(x(region1),y(region1),z(region1),20,'r','filled')
hold on
scatter3(x(region2),y(region2),z(region2),40,'y','*')
scatter3(x(region3),y(region3),z(region3),60,'g','filled')
scatter3(x(region4),y(region4),z(region4),80,'b')

grid on

view(-33, 14)

在此处输入图像描述

于 2015-07-21T14:52:15.873 回答
0

kkuilla关于热图的回答产生了更好的结果:

在此处输入图像描述

于 2015-08-05T16:01:53.943 回答