找回密码
 注册
关于网站域名变更的通知
查看: 704|回复: 3
打印 上一主题 下一主题

matlab 的 colormap 函数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-6-7 10:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
( l8 @/ L: l- s* E
colormap简介
, T0 b; K! c2 Y  a# Hmatlab中,每个figure都有(而且仅有)一个colormap,翻译过来就是色图。
( Z) H8 T3 ?9 Q! S" y7 ^# S5 s7 n, R$ r0 S1 c3 H- f
1 i5 _0 a# O) k3 s
colormap(map) 用map矩阵映射当前图形的色图。
7 F' l4 N$ |6 S# e( E% L3 Ucolormap('default') 默认的设置是 JET.
) Z! [8 \- \7 d0 G* h! U0 Y/ Imap= colormap(获得当前色图矩阵. # e; O; x) A$ s' o3 M  J# m5 a
colormap(ax,...) 应用色图到ax坐标对应的图形,而非当前图形。
+ l$ `9 ^; J8 K( W3 m- i0 r3 X7 [! ?' Y3 s
colormap实际上是一个m × 3的矩阵,每一行的3个值都为0-1之间数,分别代表颜色组成的rgb值,如[0 0 1]代表蓝色。$ M' {* H; f2 r9 B4 P9 k8 u6 V0 W: n8 w& M
: _# A1 q) e# k! a. X
系统自带了一些colormap,如:winter、autumn等。输入winter,就可以看到它是一个64x3的矩阵。
1 J% v8 z0 I6 ^3 `, a+ s! l2 w: }$ y# J* b  A9 ^! e- x
用户可以自定义自己的colormap,而且不一定是64维的。
# U# G+ H, f/ I1 @" u6 G# N$ s+ w; _' a4 s. w
系统自带的colormap:
; H% N9 K9 d: G+ V! c; j) {, m# y" `0 N! w

# U4 r' z( C- _4 ^% q# C3 ?( }- r7 ?3 c- C0 _0 T; ~

: c5 S9 r- s% ~' b$ @2 colormap用法
% u* e/ U9 n& w3 x! E那么颜色在fill或patch中到底是如何显示的呢?
+ N- F0 ^# S8 p3 W& \; Y; }* v5 F
1 w  g- l- G, l1 T1 r# c. f本质上,是把具体的颜色变成colormap中的相应index,也就是行数。
0 x6 P4 ~9 {% O1 s2 Q- }+ Y% v& C" D
这个过程叫做换算映射:将指定的数值颜色向量(矩阵)C,映射到对应的颜色。& Q- w7 P# A  P" d# O

" ]) _# w. A) l5 V在matlab中,图形窗的属性'CdataMapping’缺省设置值为'scaled',也就是线性映射。
. S- \! A4 H% R0 x2 |# |) ^
6 I- v" H4 Y! Z4 X映射过程如下:   s5 c4 d. @( z  n
" W3 x6 b6 X# W( ?5 b0 f& ]6 Y
首先,需要根据caxis取得Cmin和Cmax两个变量(默认值为0和1),画图时如果指定了数值颜色向量(矩阵)C,Cmin和Cmax自动设置为C中的最大值和最小值。当你想控制时,可以自定义。比如将Cmax减小,这样将把所有大于Cmax的C值,全部都映射到同一个颜色(colormap中index最大的行代表的颜色)。
7 E- Y- K* |0 ]1 y+ i根据Cij在Cmin和Cmax之间的比例关系,确定对应的颜色的index,默认为线性映射。
& l3 F. Q) b4 w, {也就是说,当制定了数值颜色向量(矩阵)C之后画图,图中颜色的使用范围会自动占满整个颜色范围!!!" C' e7 Z; ?$ N# {

+ O: t; ~0 j4 A* D另外,fill中指定了某些点的颜色值,其他颜色值都是采用插值的方法确定。: v% [  N  S7 F1 b( `

9 H1 X2 ^% n* `  Z% O3 _
* g6 R$ Q3 N3 p7 r6 `3  实例
! v+ s) [9 k: S& t6 A实例1:
( Z" f' F2 Q* o" ^3 Dcolormap([spring;summer;autumn;winter])%相当于自定义了一个256*3维的colormap  
4 n% Q6 Q2 t4 t3 Y% ^                                       %实际上spring,summer,autumn,winter
0 r; S$ Z8 A* L0 Q  I' {8 Q                                       %都是64*3维的colormap! \: w6 \' X# ~: v2 K+ T
x=[0 1 1 0];
# |8 V: T1 w. H0 Cy=[0 0 1 1];                           %定义四个点 [0 0] [1 0] [1 1] [0 1]
! n4 A" n. `9 Z" u) d& zfill(x,y,[0 0.1 0.2 0.3]);             %定义四个点的C值   
+ s) o) e7 M; q# V( |                                       %则Cmin=0,Cmax=0.3  I: [# \$ ]  h5 _5 e- q$ \2 P* G
colorbar;; _4 O% S) J2 w# x# h: k
map=colormap;                          %map为256*3矩阵  Y6 g, ]1 a! e- y4 U5 P

3 K" K4 O, V+ d+ y& {# c- f6 n
+ M6 b% S/ s1 e) b结果如下:0 a2 Q  V2 o" ~6 s  |( _; l
, c# ^3 F* `# i, T. R0 t
! J/ n. E7 a, U% ~, N, c% G' n
- c1 o; r( o9 p. g5 G8 P& B
实例2:
% E7 ]% J2 N" A) q0 ^/ e/ B$ ]$ i( ]' r; \; k; h
%本例中颜色从[0 0 0] 变化到[1 1 0]
1 I4 _: F1 H* g* s! ~%增加row_cmap的值,如变化到100,则可看到颜色的渐变,而非跳跃型变化。
; i% S1 j* B% u" ^- _% r# m6 [row_cmap = 15;  %定义色图矩阵的行数7 k' o" V* x8 V; o% L
color_map=zeros(row_cmap,3);  %定义色图矩阵2 P: r* r' Z+ ~
color_r = 0:1/(row_cmap-1):1;
) i7 P) q: `( S7 H6 W. lcolor_g = 0:1/(row_cmap-1):1;* x& Y0 X9 d% |6 ]3 o/ `
color_b = 0:1/(row_cmap-1):1;' C5 T% Y) i  x$ K5 G
color_map(:,1) = color_r; 7 R4 s2 [' |5 ?# f6 ~; k% U- T: r
color_map(:,2) = color_g;
& A6 u3 n: j2 t: _  D' D" vcolormap(color_map);
- d9 I% T1 ?) S4 a
7 K$ R  e; w0 m* L" dx=[0 1 1 0];
1 x. g4 z% Y$ I9 k& Jy=[0 0 1 1];                           %定义四个点 [0 0] [1 0] [1 1] [0 1]5 p7 X1 v) p4 E2 a% j$ I+ n: M
fill(x,y,[0 0.1 0.2 0.3]);             %定义四个点的C值    ; p3 \5 O; d  d  [- i  x! s
                                       %则Cmin=0,Cmax=0.3" |$ f3 y6 v" u) C) {0 |0 f* e! }
colorbar;
5 G. Y6 ~4 D9 rmap=colormap;                          %map为15*3矩阵, _' y! y" c3 G. C5 C
colorbar;: U5 V6 W% T( X: d& T+ L+ _

% O# d3 D% X+ }3 l! k2 ~, D' U5 D结果如下:
2 O' X2 D6 ~/ ~7 _. C
# r% Y/ n. A! P) Q
1 {% h2 b) S$ W( C/ b
" {6 V5 o: r% B  y* D9 T9 w/ i2 A
  ?: `0 u! b; x2 L 5 s* Z$ S9 s4 [. ^) e" K
7 Y: ~& @- o+ q$ c! F

' u9 a! A' l  ^) H: l5 M

该用户从未签到

2#
发表于 2021-6-7 10:43 | 只看该作者
matlab 的 colormap 函数

该用户从未签到

3#
发表于 2021-6-7 13:35 | 只看该作者
matlab 的 colormap 函数

该用户从未签到

4#
发表于 2021-6-7 13:36 | 只看该作者
matlab 的 colormap 函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-2 03:01 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表