Octave / Matlab:Colormap不基于高度

时间:2016-11-01 05:07:59

标签: matlab 3d octave figure colormap

当我在3D图形中绘制多个函数时(使用surf(my_function)),默认情况是它以一种颜色对应于该点高度的方式为函数曲面的每一点着色。

我想稍微改变一下。我想在同一个图上绘制几个函数,并且它们中的大多数在z方向上稍微分开,因此它们具有不同的颜色(低的颜色具有蓝色阴影,高颜色具有红色阴影)。我想在大多数情况下保留它,除了函数表面是相同颜色的不同阴影,但是在我用于绘制这些函数的循环的每次迭代中都有颜色变化。

在我的具体情况中,我正在绘制一个二维方形井(无限势阱)中的粒子的波函数。然而,由于一些能级(即高度z)是退化的,我有不同的波函数占据相同的z。我想用它们的颜色来区分它们,同时保留功能的低谷是一定阴影的方法,而高谷则是同一颜色的不同颜色。

1 个答案:

答案 0 :(得分:3)

您可以单独设置surf的颜色:这显示了来自宽边帽的高峰和颜色的高度(不要依赖__osmesa_print__,它是内部八度函数) :

figure ("visible", "off")
surf (peaks(64), sombrero (64));
[az, el] = view ();
n = 1;
clear img_stack;
for nel = el:2:90
  view (az, nel);
  drawnow;
  img_stack (:, :, :, n++) = __osmesa_print__ (gcf);
endfor
imwrite (img_stack, "out.gif", "DelayTime", 0.1, "Compression", "lzw")

peaks with sombreo color, elevation goes from 30° to 90°