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

Matlab 用z色在坐标(x,y)上绘制(x,y,z)三元组,matlab,plot,Matlab,Plot,我有一个点(x,y,z)的列表,并且希望将它们可视化为平面上的曲线,点位于(x,y)上,颜色/强度/厚度中的任何一个都是z。如何在Matlab中实现这一点 plot(x,y)获得了正确的形状,但我需要颜色取决于z假设您不关心实际线条的颜色,而是标记。将plot与scatter结合使用 设想以下示例数据: t = 0:pi/20:2*pi; x = sin(t); y = cos(t); z = t; plot3(x,y,z); 在二维平面中绘制: plot(x,y); hold on sc

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


plot(x,y)
获得了正确的形状,但我需要颜色取决于
z

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

设想以下示例数据:

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

plot3(x,y,z);

在二维平面中绘制:

plot(x,y); hold on
scatter(x,y,300,z); hold off
结果:

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


另一种可能性是由a启发,同时考虑线条和标记

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


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

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


对于on
z
来说,增加透明度有点棘手。您可以使用
补丁
功能找到解决方法。

解决方案可以是这样的

x = 0:.05:2*pi;
y = cos(x);
planez = zeros(size(x));
z = x;  % This is the color, vary with x in this case, but you can use your vector
surface([x;x],[y;y],[planez;planez],[z;z],...
        'facecol','no',...
        'edgecol','interp',...
        'linew',2);
关键是您正在绘制一个曲面,在这里可以轻松修改颜色。我认为用
plot


您希望线条也改变颜色还是只改变点?最好两者都改变,但我有足够的数据,可以在不连接线条的情况下只绘制点。为了完整起见,我添加了一些关于依赖强度和厚度的备注。