我有一个622x5阵列,其中第1列到第4列包含球体的x,y,z和半径,第5列包含球体表面上的平均力。我想要做的是使用x,y,z,r生成球体,然后使用阵列的最后一列为球体着色。我知道如何使用以下代码在matlab中创建球体:
[x y z] = sphere;
AA=load('C_Lx_Avg.txt');
nn=length(AA(:,1));
for i=1:nn
surf(x*AA(i,4)+AA(i,1),y*AA(i,4)+AA(i,2),z*AA(i,4)+AA(i,3));
if (i==1); hold on; end;
end
shading interp
axis equal
camlight
lighting phong
set(gca,'FontSize',[16],'FontWeight','bold')
print fig01 -dpdf
但我不知道该怎么做是使用数组的最后一列来为球体着色。
答案 0 :(得分:0)
您可以修改surf
命令以指定'CData'
property,如下所示:
surf(x*AA(i,4)+AA(i,1), y*AA(i,4)+AA(i,2), z*AA(i,4)+AA(i,3), AA(i,5).*ones(size(x)));
这将根据轴的当前colormap为每个球体提供一种颜色,从最低值到最高值进行映射,您可以使用colorbar
显示该颜色。使用AA = [1 1 1 0.5 3; 0 0 0 1 1];
并添加颜色栏,这就是我得到的内容: