Matlab:如何控制流管图的颜色?

标签 matlab plot colors velocity

我目前正在尝试绘制 3D 流管。我希望 pipe 的颜色与其各自的速度相对应(例如慢=蓝色,快=红色)。

更准确地说,我有三个 3D 矩阵,其中包含 x、y 和 z 方向的速度。流管的颜色应为 sqrt(vx^2+vy^2+vz^2)。当使用streamtube(x,y,z,vx,vy,vz,sx,sy,sz)时, pipe 根据它们的z坐标着色,这是无用的,因为它无论如何都是一个3D图。

最佳答案

这并不容易(它应该是一个内置选项),但是通过修改每个管的CData(它们都是自己的图形对象),您可以实现所需的结果。这是一个例子

load wind
[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
h=streamtube(x,y,z,u,v,w,sx,sy,sz);
drawnow
view(3)
axis tight
shading interp;

这给出了这张图片: enter image description here

然后这样做:

vel=sqrt(u.^2+v.^2+w.^2); %// calculate velocities
for i=1:length(h)
    %// Modify the colour data of each tube
    set(h(i),'CData',interp3(x,y,z,vel,get(h(i),'XData')...
        ,get(h(i),'YData'),get(h(i),'ZData'),'spline'))
end
drawnow
view(3)
axis tight
shading interp;

给出了这个结果 enter image description here

注释:

1)我不知道这是否完全正确,我不知道如何测试它

2)您必须将已知点的速度数据插值到流管的顶点

3) 我发现样条插值选项效果最好,但其他选项在其他情况下可能效果更好

关于Matlab:如何控制流管图的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29227155/

相关文章:

r - 使用 2 个色阶 ggplot2 叠加颜色图

r - 在 R 中创建复杂的线图

c# - 使用 Worksheet.Range.Autofilter(Field,Criteria,Operator) 按特定颜色索引/RGB 过滤范围

string - 确认字母和数字都存在的功能/忽略异常(exception)情况

matlab - 用matlab画谢尔宾斯基三角形的高效代码

python - Matlab 中的上下文管理器 : Invoking __enter__ in Matlab

java - 通过UDP数据包从matlab发送double到java

python - 在绘制新图之前,如何从 matplotlib 图中删除点?

css - Bootstrap 自定义下载中的颜色?

c# - 如何从种子中生成随机的人类可读颜色? C#