1.使用颜色图更改颜色方案
MATLAB® 在显示曲面绘图等视觉呈现时使用默认的颜色方案。您可以通过指定颜色图来更改颜色方案。颜色图是包含 RGB 三元组的三列数组,其中每一行定义一种不同的颜色。
例如,此处为使用默认颜色方案的曲面绘图。
f = figure;
surf(peaks);
以下命令可将当前图窗的颜色图更改为 winter,它是多种预定义颜色图中的一种(有关预定义颜色图的完整列表,请参阅颜色图)。
colormap winter;
如果您打开了多个图窗,可将 Figure
对象作为第一个参量传递给 colormap
函数。
colormap(f,hot);
默认情况下,每个预定义的颜色图都会提供一个包含 256 种颜色的调色板。但是,您可以向预定义的颜色图函数传递一个整数来指定所需数量的颜色。例如,此处为包含十个条目的 hot 颜色图。
c = hot(10);
colormap(c);
您也可以自行创建 M×3 数组形式的颜色图。此数组中的各行包含不同颜色强度的红色、绿色和蓝色。颜色强度介于范围 [0,1] 之间。此处为一个简单的颜色图,其中包含三个条目。
mycolors = [1 0 0; 1 1 0; 0 0 1];
colormap(mycolors);
如果使用多个坐标区,可以通过将坐标区对象传递给 colormap
函数,为每个坐标区分配不同的颜色图。
tiledlayout(1,2)
ax1 = nexttile;
surf(peaks);
shading interp;
colormap(ax1,parula(10));
ax2 = nexttile;
surf(peaks);
shading interp;
colormap(ax2,cool(10));
2.曲面绘图数据与颜色图的关系
在使用 surf 或 mesh 等函数创建曲面绘图时,可以通过调用 colormap 函数自定义颜色方案。如果要进一步控制外观,可以更改穿过此曲面的颜色的方向或模式。这种自定义需要更改控制曲面和颜色图之间关系的数组中的值。
2.1 曲面与颜色图之间的关系
Surface
对象的 CData
属性包含一个索引数组 C
,此数组将绘图中的特定位置与颜色图中的颜色相关联。C
与曲面 z = f(x,y) 具有如下关系:
-
C
的大小与Z
相同,其中Z
是在曲面上每个网格点处都包含 f(x,y) 值的数组。 -
C(i,j)
处的值控制曲面上网格位置(i,j)
的颜色。 -
默认情况下,
C
等于Z
,即颜色随海拔而异。 -
默认情况下,
C
的范围线性映射到颜色图数组中的行数。
举例来说,Z = X + Y
的一个 3×3 抽样与包含 N
个条目的颜色图具有下列关系。
请注意,最小值 (-2
) 映射到颜色图中的第一行。最大值 (2
) 映射到颜色图中的最后一行。C
中的中间值线性映射到颜色图中间的行。
注意
先前的曲面绘图说明颜色如何分配给曲面上的顶点,但默认行为是用纯色填充补片面。该种纯色基于分配给周围顶点的颜色。有关详细信息,请参阅 FaceColor 的属性说明。
2.2更改颜色的方向或模式
在使用 C=Z
的默认值时,颜色随 Z
的变化而异。
[X,Y] = meshgrid(-10:10);
Z = X + Y;
s = surf(X,Y,Z);
xlabel('X');
ylabel('Y');
zlabel('Z');
在创建曲面时通过指定 C
可以改变这种行为。例如,以下曲面上的颜色随 X
而异。
C = X;
s = surf(X,Y,Z,C);
xlabel('X');
ylabel('Y');
zlabel('Z');
您也可以直接设置 CData
属性。以下命令将使得颜色随 Y
而异。
s.CData = Y;
颜色无需遵循单一维度的变化。实际上,CData
可以是任何与 Z
大小相同的数组。例如,以下平面上的颜色遵循 sinc 函数形状。
R = sqrt(X.^2 + Y.^2) + eps;
s.CData = sin(R)./(R);