我有一组包含 3d 笛卡尔点(x、y、z)和时间戳的数据。
我想将此数据绘制为 3d 空间中的一条连接线,线条颜色会根据时间戳值发生变化。
实际上我想在颜色条中显示时差。
有谁知道这样做的方法吗?
最佳答案
考虑以下 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)
现在如果你想画一条多色线,天真的解决方案是写一个for循环,把每个小线段画成一条单独的线,每条线都有不同的颜色。这是因为单线对象只能有一种颜色。
更好的方法是使用表面图形对象:
c = 1:numel(t); %# colors
h = surface([x(:), x(:)], [y(:), y(:)], [z(:), z(:)], ...
[c(:), c(:)], 'EdgeColor','flat', 'FaceColor','none');
colormap( jet(numel(t)) )
结果:
关于matlab - 基于值的 plot3 线条颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11855011/