我使用 MATLABplot3
函数制作了下图。
这个数字不好。因为,我认为,读者很难从这个数字估计坐标。点高度(Z 值)太难从图中估计。我的数字中缺少什么使其难以解释?
我使用 MATLABplot3
函数制作了下图。
这个数字不好。因为,我认为,读者很难从这个数字估计坐标。点高度(Z 值)太难从图中估计。我的数字中缺少什么使其难以解释?
为了更好地查看高度,您可以使用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)
我认为问题可能是此类图所固有的:数据的 0d 点很难从透视角度解释,您的大脑无法破译数据点所在的深度。例如,在我看来,您在 z=0 和 x=15 以上没有数据点,这显然是错误的,但我的大脑将您的大部分点归因于 z=-5 平面。
除非您的数据点具有随距离成比例变化的有限体积(这不能用 matlab 完成,而且可能无论如何也无济于事),否则您可能需要重新考虑您的可视化方式。如果有 3 个图,每个图都带有沿 x、y 和 z 轴的相机?
编辑:Luis Mendo 的建议让我认为在尝试回答问题时我应该有一个更开放的心态:)
您还可以使用不同的颜色/标记/点大小来区分数据中的各个区域。例如,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)
kkuilla关于热图的回答产生了更好的结果: