我想用表面图可视化4个散乱数据向量。 3个向量应该是坐标。另外,第四个矢量应代表表面颜色。 我的第一种方法是使用
绘制这些数据(xk,yk,zk,ck)scatHand = scatter3(xk,yk,zk,'*');
set(scatHand, 'CData', ck);
caxis([min(ck), max(ck)])
结果我得到了不同颜色的散点。由于这些点位于半球的表面上,因此可以获得彩色面而不仅仅是点。我使用griddata用曲面替换散射点以首先构建近似值
xk2=sort(unique(xk));
yk2=sort(unique(yk));
[xxk, yyk]=meshgrid(xk2, yk2);
zzk=griddata(xk,yk,zk,xxk,yyk,'cubic');
cck=griddata(xk,yk,clr,xxk,yyk,'cubic');
surf(xxk,yyk,zzk,cck);
shading flat;
这几乎已经是我想要的了,除了半球的底部是破旧的。当然,如果我增加插值点数,它会变得更好,但是对于绘图的处理也会变慢。所以我想知道是否有一种简单的方法可以强制插值函数做一个明确的中断。此外,看起来衣衫褴褛的边界是因为zzk的价值得到了“NaN'在半球外面,半球与z = 0平面共用。
顶部的红点是原始分散数据的前几个条目。
答案 0 :(得分:2)
您可以设置ZLim
选项以将绘制的值切片到特定范围内。
set(gca, 'Zlim', [min_value max_value])