5.5.2 颜色问题
可不可以控制MATLAB的绘图颜色呢?当然可以。但在此之前,需先了解有关MATLAB图形颜色的一些深层次的知识。
(1)颜色的表示
MATLAB中的颜色用R、G、B三个分量表示。图5-34是以R、G、B为3个坐标轴的颜色立方,一般彩色数字图像中用此方法表示颜色。
图5-34 R、G、B三原色颜色表示方法示意
MATLAB中的颜色表示方法与此相同,区别之处是,在表示颜色时,将R、G、B这3个坐标上的数值正规化到[0,1]之间,即[1,1,1]表示白色,[0,0,1]表示蓝色。
(2)绘图元素颜色的设置
在绘图时,可以用上面的颜色矢量给图形元素指定颜色。例如,用plot函数绘制向量x、y曲线时,
和
有同样的效果。用字母指定颜色的方法较简单,但可用的颜色有限,而如果用颜色矢量指定颜色,就有太多的组合了。
(3)调色板colormap
在前面的绘图函数中,很多函数都要给图形填充上颜色,如surf、contourf等。那么应该填充什么颜色呢?在MATLAB中有一个调色板,指定了一组颜色,构成一个查找表。绘图时将最小值对应查找表的最底端颜色,而将最大值对应查找表的最顶端颜色,依此类推。
在Command Window中执行colormap命令,会输出一个64行3列的矩阵,此矩阵即为MATLAB当前使用的调色板。每一行对应一个颜色。
用户也可以自己生成一个n×3的矩阵(n可以不等于64),并用colormap函数将其指定为MATLAB当前的调色板。为了方便不同的应用,MATLAB中已经内置了一些调色板,如图5-35所示。这些调色板都取了形象的名字,使用时可用colormap函数方便地将MATLAB调色板指定为相应的类型。MATLAB默认的调色板为“Jet”。
值得一提的是“Gray”,这一点在后文还要进一步说明。当图形用于黑白印刷(目前大多数情况如此)时,将图形填充成彩色印刷出来的效果会比较差。如红色和蓝色在黑白印刷时根本分不清。
图5-35 MATLAB中内置 的调色板类型
前文已提及,设置调色板颜色矩阵时,并不一定要设置成64行。如用
可以将调色板设置成16阶的灰度。
关于colormap的详细情况可查阅“Help”→“MATLAB”→“Graphics”→“Functions(Categorical list)”→“3D Visualization”→“surface and mesh tool”→“colormaps”。
(4)一些相关的函数
还有一些MATLAB颜色相关的函数,读者可查阅“Help”→“MATLAB” → “Graphics”→“ Functions(Categorical list)”→“3D Visualization”→“surface and mesh tool”→“color operations ”。