在坐标 (x,y) 上绘制 (x,y,z) 三元组,颜色为 z

Tim*_*Tim 5 matlab plot

我有一个点 (x,y,z) 列表,并希望将它们可视化为平面上的一条曲线,其中 (x,y) 上的点以及任何颜色/强度/厚度作为 z。在 Matlab 中如何实现这一点?

plot(x,y)获得正确的形状,但我需要依赖的颜色z

the*_*alk 3

假设您不关心实际线条的颜色,而是关心标记。plot与 结合使用scatter

想象一下以下示例数据:

t = 0:pi/20:2*pi;
x = sin(t);
y = cos(t);
z = t;

plot3(x,y,z);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在 2D 平面上绘制:

plot(x,y); hold on
scatter(x,y,300,z); hold off
Run Code Online (Sandbox Code Playgroud)

结果是:

在此输入图像描述

根据您的评论:如果您有足够的数据并且不需要该行,只需使用scatter,这正是您所需要的。


另一种可能性受到MATLAB Central 上的解决方案的启发,同时考虑了线条和标记。

surface([x;x],[y;y],zeros(2,length(t)),[z;z],'EdgeColor','flat',...
        'Marker','o','MarkerSize',10,'MarkerFaceColor','flat');
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


使颜色依赖z非常容易,要更改标记大小,您肯定需要该scatter功能:

surface([x;x],[y;y],zeros(2,length(t)),[z;z],'EdgeColor','flat'); hold on
MarkerSize = round(z*1000)+1;
scatter(x,y,MarkerSize,z,'.','MarkerFaceColor','auto'); hold off
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

对于z依赖、增加透明度来说,这有点棘手。您可以使用该函数在此处patch找到解决方法。