MATLAB中的颜色控制

1.色图颜色调配命令

在MATLAB中,控制及实现颜色调配的主要命令为colormap,它的使用格式如下:

调用格式                                         说明

colormap([R G B])                    设置当前色图为由矩阵[R G B]所调配出的颜色

colormap('default')                    设置当前色图为默认色

cmap = colormap                      获取当前色的调配矩阵


利用调配矩阵来设置颜色是很麻烦的,为了使用方便MATLAB提供了几种常用的色图,具体如下:

MATLAB中的颜色控制_第1张图片

例:对山峰函数二维等值线图进行颜色控制

>> close all
>> Z = peaks;
>> contourf(Z,10)

MATLAB中的颜色控制_第2张图片

>> colormap hsv
MATLAB中的颜色控制_第3张图片

>> colormap copper
MATLAB中的颜色控制_第4张图片

>> colormap prism
MATLAB中的颜色控制_第5张图片

>> colormap gray
MATLAB中的颜色控制_第6张图片


2.色图明暗控制命令

MATLAB中,控制色图明暗的命令是brighten命令,它的使用格式如下:

调用格式                                                               说明

brighten(beta)                                               增强或减小色图的色彩强度,若0<beta<1,则增加色图;若-1<beta<0,则减小色图强度

brighten(h,beta)                                            增加或减小句柄h指向的对象的色彩强度

newmap = brighten(beta)                           返回一个比当前色图增加或减弱的新的色图 

newmap = brighten(cmap,beta)                该命令并未改变指定色图cmap的亮度,而是返回变化后的色图给newmap


例:观察山峰函数的三种不种不同色图下的图像

>> h1 = figure;
>> surf(peaks),title('当前色图')
>> h2 = figure;
>> surf(peaks),brighten(-0.85)
>> title('减弱色图')
>> h3 = figure;
>> surf(peaks),brighten(0.85)
>> title('增强色图')
>> 
MATLAB中的颜色控制_第7张图片

MATLAB中的颜色控制_第8张图片

MATLAB中的颜色控制_第9张图片

3.色轴刻度

caxis命令控制着对应色图的数据值的映射图。它通过将被变址的颜色数据(CData)与颜色数据映射(CDataMapping)设置为scaled,影响着任何的表面、块、图像;该命令还可以改变坐标轴图形对象的属性Clim与ClimMode。

caxis命令的使用格式如下:

调用格式                                                        说明

caxis([cmin cmax])                               将颜色的刻度范围设置为[cmin cmax]。数据值中小于cmin或大于cmax的,将分别映射于cmin与cmax;处于cmin与cmax

                                                                 之间的数据将线性地映射于当前色图

caxis auto                                               让系统自动地计算数据的最大值与最小值对应的颜色范围,这是系统的默认状态。数据中的Inf对应于最大颜色值;-Inf对应

                                                                 于最小颜色值;带颜色值设置为NaN的面或者边界将不显示

caxis manual                                         冻结当前颜色坐标轴的刻度范围。这样,当hold设置为on时,可使后面的图形命令使用相同的颜色范围

caxis(caxis)                                             同上

v = caxis                                                  返回一包含当前正在使用的颜色范围的二维向量v = [cmin cmax]

caxis(axes_handle,...)                           使用参量axis_handle指定的坐标轴,而非当前坐标轴


例:创建一个球面,并将其顶端映射为颜色表里的最高值。


>> close all
>> [X,Y,Z] = sphere;
>> C = Z;
>> subplot(1,2,1)
>> surf(X,Y,Z,C)
>> title('图1')
>> subplot(1,2,2)
>> surf(X,Y,Z,C),caxis([-1 0])
>> title('图2')
>>

MATLAB中的颜色控制_第10张图片

将[-1 0]映射到整个色图范围,所以球面中[0 1]的部分就映射成0部分的颜色


在MATLAB中,还有一个画色轴的命令colorbar,这个命令在图形窗口的工具栏中有相应的图标。它在命令窗口的使用格式如下:

调用格式                                               说明

colorbar                                        在当前图形窗口中显示当前色轴

colorbar(‘vert')                             增加一个垂直色轴

colorbar('horiz’)                           增加一个水平色轴

colorbar(h)                                   在h指定的位置旋转一个色轴,若图形宽度大于高度,则将色轴水平放置

h = colorbar(...)                            返回一个指向色轴的句柄


>> close all
>> [X,Y,Z] = sphere;
>> C = Z;
>> surf(X,Y,Z,C),caxis([-1 0])
>> axis square
>> colorbar('vert')

MATLAB中的颜色控制_第11张图片

>> close all

>> [X,Y,Z] = sphere;

>> C = Z;

>> surf(X,Y,Z,C),caxis([-1 0])

>> axis square

>> colorbar('vert')


4.颜色渲染设置

shading命令用来控制曲面与补片等的图形对象的颜色渲染,同时设置当前坐标轴中的所有曲面与补片图形对象的属性EdgeColor与FaceColor。

shading命令的使用格式如下:

shading flat              each mesh line segment and face has aconstant color determined by the color value at the endpoint of the segment or the corner                             of the face that has the smallest index or indices.

shading faceted           flat shading with superimposed black meshlines. This is the default shading mode.

shading interp            varies the color in each line segment andface by interpolating the colormap index or true color value across the line orface.

shading(axes_handle,...)  applies the shading type to theobjects in the axes specified by axes_handle, instead of the current axes. Usequoted strings when                           using a function form.

例:针对下面的函数比较上面三种使用格式得出图形的不同。


>> [X,Y] = meshgrid(-7.5:0.5:7.5);
>> Z = sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2);
>> subplot(2,2,1)
>> surf(X,Y,Z),title('三维视图')
>> subplot(2,2,2),surf(X,Y,Z),shading flat
>> title('shading flat')
>> subplot(2,2,3),surf(X,Y,Z),shading faceted
>> title('shading faceted')
>> subplot(2,2,4),surf(X,Y,Z),shading interp
>> title('shading interp')
>> 




你可能感兴趣的:(MATLAB中的颜色控制)