我需要在3d中的球体上绘制彩色速度场。我正在寻找一个与此类似的功能:
f(X, Y, Z, V)
其中X
,Y
,Z
代表三维坐标(使用meshgrid
形成的三维矩阵)和V
是一个三维矩阵,确定每个坐标的速度值。结果应该是一个三维彩色图,根据V
中每个坐标的值,颜色会发生变化。
我尝试使用isosurface
,但由于我需要轮廓,因此效果不佳,我只需要在每个坐标中都有特定的值。我使用quiver3
并且效果很好但是我需要用颜色而不是箭头来绘制地图。
我非常感谢任何想法和解决方案,因为我一直在阅读许多类似问题的很多评论(例如:How to plot 4D contour lines (XYZ-V) in MATLAB?)并且找不到任何解决方案。
提前谢谢你。
答案 0 :(得分:1)
我建议使用scatter3
功能。它非常可定制,可能正是您所需要的。
答案 1 :(得分:1)
我同意克里斯的回答。但是,提供一个关于如何使用scatter3
的小例子可能是值得的:
第一:
x = rand(1,100); % x-coordinates
y = rand(1,100); % y-coordinates
z = rand(1,100); % z-coordinates
i = rand(1,100)*200;
% specify the indexed color for each point
icolor = ceil((i/max(i))*256);
figure;
scatter3(x,y,z,i,icolor,'filled');
% if you omit the 'filled' option, you'll just get circles
第一个示例将根据变量i
为您提供颜色和大小。如果您希望散点图的颜色取决于i
的值但是大小一致,请考虑第二种方法:
x = rand(1,100); % x-coordinates
y = rand(1,100); % y-coordinates
z = rand(1,100); % z-coordinates
i = rand(1,100)*200;
% specify the indexed color for each point
icolor = ceil((i/max(i))*256);
% after setting the color based on i, reset i to be uniform
i = ones(size(i)).*100;
figure;
scatter3(x,y,z,i,icolor,'filled');
在定义颜色后重置i
,所有散点都具有相同的大小。