在Matlab中绘制3D点

7

我想在Matlab中绘制3D点,根据一个值使用不同的颜色。我有以下代码,但这并不起作用,因为plot3d需要一个向量。

x = vdhf_data.data(:,1);
y = vdhf_data.data(:,2);
z = vdhf_data.data(:,3);
data = vdhf_data.data(:,4);

grid on
hold all

for k=1:length(x)
    if data(k) < 6  
        plot3d(x(k), y(k), z(k), 'ws--', 'MarkerEdgeColor', 'r', 'MarkerFaceColor', 'r')
    else
        plot3d(x(k), y(k), z(k), 'ws--', 'MarkerEdgeColor', 'g', 'MarkerFaceColor', 'g')
    end
end

如何在Matlab中实现这个?
1个回答

10

我会使用

scatter3(x,y,z,ones(size(x)),data,'filled')

这将绘制具有相同大小的所有点,并根据数据的值将它们颜色编码,使用当前的彩色地图。您还可以使用数据来缩放每个点的大小。

scatter3(x,y,z,data.^-2,data,'filled')

我认为在scatter3中,尺寸向量可以是标量值以获得相同的大小,也可以是空的([])以获取默认大小,而不是使用ones(size(x)) - yuk
1
是的,可以有一个标量。我只想要两个标记颜色。有没有可能在一行中添加它而不是循环? - Razer
您只需要调整您的色图。所以对于两种颜色(红色和蓝色),您需要像这样做colormap([ones(50,1)*[1 0 0]; ones(50,1)*[0 0 1]])。这将使得颜色分割处于数据范围的中间位置。如果您想将其放置在特定数字上,则必须相应地缩放ones(n-a,1)ones(n+a,1) - zamazalotta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接