plot3基于值的线条颜色

Fan*_*Fox 7 matlab plot colors

我有一组包含3d笛卡尔点(x,y,z)和时间戳的数据.

我想将此数据绘制为3d空间中的连接线,线条颜色根据时间戳值而变化.

实际上我想在彩条中显示时差.

有谁知道这样做的方法?

Amr*_*mro 12

考虑以下随着时间的推移沿着螺旋形路径移动的3D点的示例:

%# data
t = linspace(0,8*pi,200);
x = 20*t; y = cos(t); z = sin(t);

%# plot 3D line
plot3(x,y,z)
axis tight, grid on, view(35,40)
Run Code Online (Sandbox Code Playgroud)

现在,如果你想绘制一条多色线,那么天真的解决方案就是编写一个for循环,将每个小段绘制成一条单独的线,每条线都有不同的颜色.这是因为单个线对象只能有一种颜色.

更好的方法是使用表面图形对象:

c = 1:numel(t);      %# colors
h = surface([x(:), x(:)], [y(:), y(:)], [z(:), z(:)], ...
    [c(:), c(:)], 'EdgeColor','flat', 'FaceColor','none');
colormap( jet(numel(t)) )
Run Code Online (Sandbox Code Playgroud)

结果:

截图