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

matlab 的 colormap 函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
* e1 w* f  h. H3 h( d  [' T
colormap简介8 E: m  W/ |7 q
matlab中,每个figure都有(而且仅有)一个colormap,翻译过来就是色图。
5 `4 z5 n4 R' y4 B: q+ M! S9 v2 O; X9 H. k+ u* r3 H
1 w, D9 B" u( x3 P3 E) ~
colormap(map) 用map矩阵映射当前图形的色图。
, {6 i" W; l" P4 d1 ocolormap('default') 默认的设置是 JET.
- l' x7 y9 Y; q: s9 m# `map= colormap(获得当前色图矩阵. 9 b: h1 z/ [2 i0 k( n
colormap(ax,...) 应用色图到ax坐标对应的图形,而非当前图形。
( R4 Z, Z9 J. Q! U4 H  C3 ^* \0 E# a& H0 ~( ^
colormap实际上是一个m × 3的矩阵,每一行的3个值都为0-1之间数,分别代表颜色组成的rgb值,如[0 0 1]代表蓝色。
; R7 K0 J& k4 e
* l0 {: }* z3 \8 y6 {5 s, T. A系统自带了一些colormap,如:winter、autumn等。输入winter,就可以看到它是一个64x3的矩阵。* A, b0 }6 j2 H' ~1 ^  u1 k
" b6 o+ h7 Z; K8 K' s. X/ r8 X
用户可以自定义自己的colormap,而且不一定是64维的。
# q  V$ {) q6 `5 y( U& G  v6 s- T2 \' n3 S( G" r+ P: M+ k: f8 \0 \
系统自带的colormap:: q6 j' z' A% W5 b
/ j( p* s4 A* r) t! W% a
, d" l/ e/ E& [& i8 T. q' \4 ^6 U9 J% w

5 {' J3 Q! s! D$ {$ ?3 C' T$ u; M
% N' \$ ~; q1 o, s+ I  y: C2 colormap用法+ r) k4 R% X- z, [$ B" I! _  [
那么颜色在fill或patch中到底是如何显示的呢?9 }  S: |& L2 s. ~" A# I7 z

* y! s% b0 L& `( _9 l本质上,是把具体的颜色变成colormap中的相应index,也就是行数。
) P" Z0 ?$ p# `# {/ P' m, s, o8 H, {6 p# t' V8 A
这个过程叫做换算映射:将指定的数值颜色向量(矩阵)C,映射到对应的颜色。
6 `/ Y7 q1 C% F. X" c+ Y
3 ]. k# ?( }2 B) p) s在matlab中,图形窗的属性'CdataMapping’缺省设置值为'scaled',也就是线性映射。1 ]) h5 {: a. ]- L' Z9 S
( G. L* W0 i4 P; ?  ?) O
映射过程如下:
+ v5 g/ s( o, I1 J" h! C/ o: @8 J9 x4 S# Z+ i3 g. [/ U4 d" U; U
首先,需要根据caxis取得Cmin和Cmax两个变量(默认值为0和1),画图时如果指定了数值颜色向量(矩阵)C,Cmin和Cmax自动设置为C中的最大值和最小值。当你想控制时,可以自定义。比如将Cmax减小,这样将把所有大于Cmax的C值,全部都映射到同一个颜色(colormap中index最大的行代表的颜色)。
8 [3 Z8 N. y; m5 H2 Y8 x4 j根据Cij在Cmin和Cmax之间的比例关系,确定对应的颜色的index,默认为线性映射。 0 n4 t+ S4 i3 H, }  K' S
也就是说,当制定了数值颜色向量(矩阵)C之后画图,图中颜色的使用范围会自动占满整个颜色范围!!!% B, H: ^" K0 [6 K* I
! x& Y$ B) P  q- t7 y
另外,fill中指定了某些点的颜色值,其他颜色值都是采用插值的方法确定。% D& }1 {& Q4 ?5 Q: e+ B

% J& ]0 K0 G! y& r% b
' }7 Z& Q! t  T8 f) T! ]  \) G6 n  b% A! l3  实例; A. u0 H% _; q1 s/ A2 w( }
实例1:
1 S8 q6 F# G6 K$ [5 Q8 _colormap([spring;summer;autumn;winter])%相当于自定义了一个256*3维的colormap  
1 z: N; G! n: {5 W& G                                       %实际上spring,summer,autumn,winter$ L# r9 r$ T" D* N& N  c
                                       %都是64*3维的colormap" G2 s; E% h  }1 |/ T
x=[0 1 1 0];  M$ X/ Z- u  ^: F
y=[0 0 1 1];                           %定义四个点 [0 0] [1 0] [1 1] [0 1]
( U. f1 G, r) I$ m  ffill(x,y,[0 0.1 0.2 0.3]);             %定义四个点的C值    & ~. J3 T3 E& c2 q/ O* Q$ s+ V
                                       %则Cmin=0,Cmax=0.3
! @5 a* C5 B& p8 o2 ~' s; h# rcolorbar;
; A2 b' i# a) u8 E# Emap=colormap;                          %map为256*3矩阵0 B- |+ u9 l- t. w1 S1 |3 w

7 X* h4 j4 w  m$ V1 A# p7 s+ ^- P8 b; D. \( @/ d, r: B
结果如下:- Z1 [0 i& B0 O: r- V

% B6 I7 A6 F" v1 |
6 ~' p8 b, Q) p% H' Y
+ L( q& ?  k, ~6 R( z4 o, @+ Z; P实例2:) n0 U- _5 H+ y8 O4 ]/ ]% F) y
  v, f/ I! e7 _
%本例中颜色从[0 0 0] 变化到[1 1 0]( }0 ?$ ]. ]' j3 f1 B
%增加row_cmap的值,如变化到100,则可看到颜色的渐变,而非跳跃型变化。
  E; p* `! v% i( I( r7 A2 Brow_cmap = 15;  %定义色图矩阵的行数. P2 H8 F( Z) s) G
color_map=zeros(row_cmap,3);  %定义色图矩阵
1 A+ D& F9 V0 ~) tcolor_r = 0:1/(row_cmap-1):1; " w8 p( \: X& a+ Y7 q
color_g = 0:1/(row_cmap-1):1;
  u# n: M; \* c$ c6 e) X. \- s) Acolor_b = 0:1/(row_cmap-1):1;
, M; @# T- N6 Bcolor_map(:,1) = color_r;
- s5 I3 o/ w, n& ?" s; \4 mcolor_map(:,2) = color_g;
4 D7 @: M+ s3 D4 G) d7 @. `colormap(color_map);. d" y' W( {/ W- Y. f
" w% r4 [& I# w& V) o0 G8 t) X
x=[0 1 1 0];6 V4 l6 x: s: B, x7 p6 Q/ x
y=[0 0 1 1];                           %定义四个点 [0 0] [1 0] [1 1] [0 1]! k8 V9 ^3 o/ n  O  t
fill(x,y,[0 0.1 0.2 0.3]);             %定义四个点的C值    & W' w$ H0 c# ^9 D* |/ i
                                       %则Cmin=0,Cmax=0.3
( `$ x# g+ ?, H! @colorbar;* t- \; U' B" u! w" D& P
map=colormap;                          %map为15*3矩阵
& F7 S% S3 |. `8 N" ]7 K% T6 _- rcolorbar;$ ~0 x5 c) {$ i0 o8 ~$ X) w

* V- ^' S! \% E: R  E& _+ G- T结果如下:
* s" `) l, ^1 k- k& E: h& X6 i
- n- P& ^; @% E4 R+ P3 n! L; l. q ( J7 [# y# \, q6 Y6 H5 R8 M
4 |% w8 N+ h1 Y

" O0 X! J8 e4 G  N- h) s
( ~- m& l3 l6 X2 c' v2 t/ n4 a( Q2 [
2 u) [/ c. w/ h0 j" a. @& i* Q, Y" ~7 e4 ?/ D& B* [) k( U

该用户从未签到

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-10-29 10:20 , Processed in 0.187500 second(s), 26 queries , Gzip On.

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

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

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