Matlab中的colormap详解
2015-11-12 15:34
357 查看
matlab中,每个figure都有(而且仅有)一个colormap,翻译过来就是色图。
COLORMAP(MAP) 用MAP矩阵映射当前图形的色图。
COLORMAP('default') 默认的设置是 JET.
MAP = COLORMAP 获得当前色图矩阵.
COLORMAP(AX,...) 应用色图到AX坐标对应的图形,而非当前图形。
colormap实际上是一个mx3的矩阵,每一行的3个值都为0-1之间数,分别代表颜色组成的rgb值,如[0 0 1]代表蓝色。系统自带了一些colormap,如:winter、autumn等。输入winter,就可以看到它是一个64x3的矩阵。用户可以自定义自己的colormap,而且不一定是64维的。
那么颜色在fill或patch中到底是如何显示的呢?本质上,是把具体的颜色变成colormap中的相应index,也就是行数。这个过程叫做换算映射:将指定的数值颜色向量(矩阵)C,映射到对应的颜色。
在matlab中,图形窗的属性'CdataMapping’缺省设置值为'scaled',也就是线性映射。
映射过程如下:
首先,需要根据caxis取得Cmin和Cmax两个变量(默认值为0和1),画图时如果指定了数值颜色向量(矩阵)C,Cmin和Cmax自动设置为C中的最大值和最小值。当你想控制时,可以自定义。比如将Cmax减小,这样将把所有大于Cmax的C值,全部都映射到同一个颜色(colormap中index最大的行代表的颜色)。
根据Cij在Cmin和Cmax之间的比例关系,确定对应的颜色的index,默认为线性映射。
也就是说,当制定了数值颜色向量(矩阵)C之后画图,图中颜色的使用范围会自动占满整个颜色范围!!!
另外,fill中指定了某些点的颜色值,其他颜色值都是采用插值的方法确定。
例1:
colormap([winter;autumn;summer])%相当于自定义了一个64*3维的colormap
x=[0 1 1 0];
y=[0 0 1 1];
fill(x,y,[0 0.1 0.2 0.3]);%则Cmin=0,Cmax=0.3
colorbar;%显示色图bar
[align=center][/align]
运行结果如下:
例2:
%本例中颜色从[0 0 0] 变化到[1 1 0]
%增加row_cmap的值,如变化到100,则可看到颜色的渐变,而非跳跃型变化。
row_cmap = 15; %定义色图矩阵的行数
color_map1=zeros(row_cmap,3); %定义色图矩阵
color_r = 0:1/(row_cmap-1):1;
color_g = 0:1/(row_cmap-1):1;
color_b = 0:1/(row_cmap-1):1;
color_map1(:,1) = color_r;
color_map1(:,2) = color_g;
colormap(color_map1);
colorbar;
整理自:http://hi.baidu.com/stinkbug/blog/item/dd475343dee7c9129313c6fc.html
http://blog.sina.com.cn/s/blog_618af1950100eyp4.html
COLORMAP(MAP) 用MAP矩阵映射当前图形的色图。
COLORMAP('default') 默认的设置是 JET.
MAP = COLORMAP 获得当前色图矩阵.
COLORMAP(AX,...) 应用色图到AX坐标对应的图形,而非当前图形。
colormap实际上是一个mx3的矩阵,每一行的3个值都为0-1之间数,分别代表颜色组成的rgb值,如[0 0 1]代表蓝色。系统自带了一些colormap,如:winter、autumn等。输入winter,就可以看到它是一个64x3的矩阵。用户可以自定义自己的colormap,而且不一定是64维的。
那么颜色在fill或patch中到底是如何显示的呢?本质上,是把具体的颜色变成colormap中的相应index,也就是行数。这个过程叫做换算映射:将指定的数值颜色向量(矩阵)C,映射到对应的颜色。
在matlab中,图形窗的属性'CdataMapping’缺省设置值为'scaled',也就是线性映射。
映射过程如下:
首先,需要根据caxis取得Cmin和Cmax两个变量(默认值为0和1),画图时如果指定了数值颜色向量(矩阵)C,Cmin和Cmax自动设置为C中的最大值和最小值。当你想控制时,可以自定义。比如将Cmax减小,这样将把所有大于Cmax的C值,全部都映射到同一个颜色(colormap中index最大的行代表的颜色)。
根据Cij在Cmin和Cmax之间的比例关系,确定对应的颜色的index,默认为线性映射。
也就是说,当制定了数值颜色向量(矩阵)C之后画图,图中颜色的使用范围会自动占满整个颜色范围!!!
另外,fill中指定了某些点的颜色值,其他颜色值都是采用插值的方法确定。
例1:
colormap([winter;autumn;summer])%相当于自定义了一个64*3维的colormap
x=[0 1 1 0];
y=[0 0 1 1];
fill(x,y,[0 0.1 0.2 0.3]);%则Cmin=0,Cmax=0.3
colorbar;%显示色图bar
[align=center][/align]
运行结果如下:
例2:
%本例中颜色从[0 0 0] 变化到[1 1 0]
%增加row_cmap的值,如变化到100,则可看到颜色的渐变,而非跳跃型变化。
row_cmap = 15; %定义色图矩阵的行数
color_map1=zeros(row_cmap,3); %定义色图矩阵
color_r = 0:1/(row_cmap-1):1;
color_g = 0:1/(row_cmap-1):1;
color_b = 0:1/(row_cmap-1):1;
color_map1(:,1) = color_r;
color_map1(:,2) = color_g;
colormap(color_map1);
colorbar;
整理自:http://hi.baidu.com/stinkbug/blog/item/dd475343dee7c9129313c6fc.html
http://blog.sina.com.cn/s/blog_618af1950100eyp4.html
相关文章推荐
- matlab中的sort函数详解
- matlab学习笔记(四)--- 图像的几何操作
- 标准DPCM编码(Matlab实现)
- matlab使用小波变换进行图像融合
- Matlab 几种卷积的实现与比较(conv与filter,conv2与filter2)
- matlab的m文件关联方法
- 均值,方差,协方差三者的关系以及协方差矩阵
- Matlab 最大值滤波 中值滤波 最小值滤波 ordfilt2
- matlab图形句柄属性总结
- matlab画甘特图(用任意多颜色表示任意多工件)
- 用matlab批量重命名文件
- 数值分析 反幂法求矩阵按模最小特征值 MATLAB实现
- 用matlab批量重命名文件(保留下划线前字符)
- 用matlab 将图片序列导出视频
- matlab学习笔记(三)---图像的代数运算
- Sublime 中对 matlab 文件语法高亮(Highlighting)
- matlab使用
- matlab中save函数使用
- 探索MATLAB循环语句内部的变量
- matlab slider和edit控件