matlab使用教程(76)—颜色图的作用

1.使用颜色图更改颜色方案

        MATLAB® 在显示曲面绘图等视觉呈现时使用默认的颜色方案。您可以通过指定颜色图来更改颜色方案。颜色图是包含 RGB 三元组的三列数组,其中每一行定义一种不同的颜色。

        例如,此处为使用默认颜色方案的曲面绘图。

f = figure;
surf(peaks);

        以下命令可将当前图窗的颜色图更改为 winter,它是多种预定义颜色图中的一种(有关预定义颜色图的完整列表,请参阅颜色图)。

colormap winter;

Figure contains an axes object. The axes object contains an object of type surface.

        如果您打开了多个图窗,可将 Figure 对象作为第一个参量传递给 colormap 函数。

colormap(f,hot);

Figure contains an axes object. The axes object contains an object of type surface.

        默认情况下,每个预定义的颜色图都会提供一个包含 256 种颜色的调色板。但是,您可以向预定义的颜色图函数传递一个整数来指定所需数量的颜色。例如,此处为包含十个条目的 hot 颜色图。

c = hot(10);
colormap(c);

Figure contains an axes object. The axes object contains an object of type surface.

        您也可以自行创建 M×3 数组形式的颜色图。此数组中的各行包含不同颜色强度的红色、绿色和蓝色。颜色强度介于范围 [0,1] 之间。此处为一个简单的颜色图,其中包含三个条目。

mycolors = [1 0 0; 1 1 0; 0 0 1];
colormap(mycolors);

Figure contains an axes object. The axes object contains an object of type surface.

        如果使用多个坐标区,可以通过将坐标区对象传递给 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 个条目的颜色图具有下列关系。

The relationship between matrix C, a colormap matrix, and a surface plot. The smallest value of C maps to the first row in the colormap matrix, and that color appears at the corresponding location of the plot. Similarly, the largest value of C maps to the last row in the colormap matrix, and that color appears at the corresponding location of the plot.

        请注意,最小值 (-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');

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type surface.

        在创建曲面时通过指定 C 可以改变这种行为。例如,以下曲面上的颜色随 X 而异。

C = X;
s = surf(X,Y,Z,C);
xlabel('X');
ylabel('Y');
zlabel('Z');

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type surface.

        您也可以直接设置 CData 属性。以下命令将使得颜色随 Y 而异。

s.CData = Y;

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type surface.

        颜色无需遵循单一维度的变化。实际上,CData 可以是任何与 Z 大小相同的数组。例如,以下平面上的颜色遵循 sinc 函数形状。

R = sqrt(X.^2 + Y.^2) + eps;
s.CData = sin(R)./(R);

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type surface.

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

配电网和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值