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

matlab 的 colormap 函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

" U1 U5 o6 K0 p, o8 acolormap简介
  Y# t" F  m# K' ~* ymatlab中,每个figure都有(而且仅有)一个colormap,翻译过来就是色图。
/ w" \5 Q0 Z, q$ D# Y( o: H6 ~5 B6 H4 {9 n3 e7 ]  j

5 ]" o5 q& H2 ucolormap(map) 用map矩阵映射当前图形的色图。 ! e, H2 h; t' `5 a
colormap('default') 默认的设置是 JET. " g' \6 k0 X7 P8 B& q+ {
map= colormap(获得当前色图矩阵.
) j, B0 C  x6 O, t6 Fcolormap(ax,...) 应用色图到ax坐标对应的图形,而非当前图形。% I9 J! j* k; @, |9 h- o4 z% y7 w

% @. ^3 K3 {* Q/ [7 ~" Tcolormap实际上是一个m × 3的矩阵,每一行的3个值都为0-1之间数,分别代表颜色组成的rgb值,如[0 0 1]代表蓝色。6 ?0 A% F- z2 Z
$ X* F2 o/ G; y% H/ |5 U) E, L
系统自带了一些colormap,如:winter、autumn等。输入winter,就可以看到它是一个64x3的矩阵。
0 F8 d& n, n  I4 Y4 D2 A7 z
# V- @6 ?. }7 V7 ]- H! ~/ [用户可以自定义自己的colormap,而且不一定是64维的。
2 Z" f4 p( m( U* M" N* X9 v1 v" n; F2 @% S* _, A
系统自带的colormap:
& j. H% M# {0 P2 h
5 \4 Z. f0 `% q! i/ M0 Q) Y- ]: y4 j9 f' { 2 S( C3 o* g! P" G5 T9 b) S( B

  W# _& x5 w+ r6 l* E
. w8 \  S) l  R+ J: K& {! ]9 n2 colormap用法7 i3 r& }) U6 d9 B2 R5 n
那么颜色在fill或patch中到底是如何显示的呢?( J7 O" l9 u5 j; h- X

2 D/ t! Y5 V) s0 k. N) v# J本质上,是把具体的颜色变成colormap中的相应index,也就是行数。
# o  z! ?; V; f# ~+ \; I4 w# q+ s+ B) \# Z2 f# E9 ]% G
这个过程叫做换算映射:将指定的数值颜色向量(矩阵)C,映射到对应的颜色。
7 j2 `4 O# v$ h& m5 D5 k0 z* q+ K  K0 f% `7 p
在matlab中,图形窗的属性'CdataMapping’缺省设置值为'scaled',也就是线性映射。/ t5 d7 m+ ~8 F+ K: [4 x
9 T. Y* ^# G2 E1 U  A* t
映射过程如下: ' b5 `' H, R( y  [3 R

. c) M1 e& d; O! [: ~+ Z7 ~首先,需要根据caxis取得Cmin和Cmax两个变量(默认值为0和1),画图时如果指定了数值颜色向量(矩阵)C,Cmin和Cmax自动设置为C中的最大值和最小值。当你想控制时,可以自定义。比如将Cmax减小,这样将把所有大于Cmax的C值,全部都映射到同一个颜色(colormap中index最大的行代表的颜色)。 5 F' b) `3 p: F3 |
根据Cij在Cmin和Cmax之间的比例关系,确定对应的颜色的index,默认为线性映射。 7 F: Z; b6 y) d
也就是说,当制定了数值颜色向量(矩阵)C之后画图,图中颜色的使用范围会自动占满整个颜色范围!!!
$ H/ Z6 K, i- D7 M) x5 d5 ~' F5 v9 [/ Q
另外,fill中指定了某些点的颜色值,其他颜色值都是采用插值的方法确定。7 J. m& S. R5 W; t

- ]7 c2 N4 `8 Q2 p
$ i* M2 u* a- A" v3  实例% U; j& e+ r4 t* W$ O7 H/ f
实例1:2 e# e/ G8 E0 g& i/ Z  A0 v! |
colormap([spring;summer;autumn;winter])%相当于自定义了一个256*3维的colormap  5 L! H6 e, a- I# n
                                       %实际上spring,summer,autumn,winter
- Q, s; t& c8 w# _                                       %都是64*3维的colormap* O- }  E/ N& t/ d
x=[0 1 1 0];
: P3 n' Z, L0 k' J" Q- P/ H7 `5 `) \y=[0 0 1 1];                           %定义四个点 [0 0] [1 0] [1 1] [0 1]! H9 |, E1 m  S+ Q
fill(x,y,[0 0.1 0.2 0.3]);             %定义四个点的C值   
  y. j6 P1 @4 ?/ p: o                                       %则Cmin=0,Cmax=0.3/ j8 x; m, _, k. r: i
colorbar;8 I* [9 W& L- a* [
map=colormap;                          %map为256*3矩阵, M  }6 Z* W/ _( h
* x( B7 g3 p! o
# T$ g/ q& w$ w+ Y) @0 K
结果如下:3 O2 m: w2 I0 P1 i' S4 e

- c6 J9 [7 n4 L& Q8 p$ ?# }2 h" x
; L, T" u( K+ b' X! A/ m: U+ `7 c
( B) y+ ^: {* X. c实例2:% I9 [- K6 u5 {) z9 T; d' ~

: ]  E9 W; {) }, b%本例中颜色从[0 0 0] 变化到[1 1 0]
0 g, Q6 p8 C/ D6 {% F" |( f4 c) k%增加row_cmap的值,如变化到100,则可看到颜色的渐变,而非跳跃型变化。
, e. n0 ?: l8 Z$ |row_cmap = 15;  %定义色图矩阵的行数
- L0 W4 L8 e0 @  q' Tcolor_map=zeros(row_cmap,3);  %定义色图矩阵
2 a: I( o0 l5 f; t' Y% ocolor_r = 0:1/(row_cmap-1):1;
) U9 v# H% r# R- X8 G. Ucolor_g = 0:1/(row_cmap-1):1;4 X. Y0 ?& y5 ^  u+ T$ `
color_b = 0:1/(row_cmap-1):1;8 I% n7 {8 A+ `, F( E. m
color_map(:,1) = color_r; , @4 d5 ]  U8 _3 y, K/ P1 @( H" I
color_map(:,2) = color_g;, m) k; v9 d1 N
colormap(color_map);
! Z- s6 p/ h( `  a5 |" T. C$ ?* G0 S, Z" o8 r% f
x=[0 1 1 0];, y4 q, K% R, D) ?& F
y=[0 0 1 1];                           %定义四个点 [0 0] [1 0] [1 1] [0 1]+ ]1 H# S+ c3 C  U2 L+ S  V% r
fill(x,y,[0 0.1 0.2 0.3]);             %定义四个点的C值    & z1 }! |$ ], R  [* x
                                       %则Cmin=0,Cmax=0.3! [" k' p. R$ A7 o. q
colorbar;! v) x2 \8 f+ g3 N
map=colormap;                          %map为15*3矩阵
. n5 e( {8 `; \7 C  fcolorbar;
) f) z) k+ J$ \$ @: [! B# \" W8 _$ l. h/ l8 |! `+ o
结果如下:" E6 ^0 _/ t+ W; R9 F9 M  E' Y

. e( I/ y8 H# V) \7 \- B, q, |
! {% B. B7 B6 l$ ^/ S- @$ g9 ~& J, a
$ X( W- u/ Y  Z$ i3 o) y( ?5 q, Q( `2 e- Z- \* Z. k. _& j

# \; Y0 ~% V* a5 @8 ]4 O7 ]1 C2 v7 @$ m6 u3 z3 ^# i

/ S7 G1 z* e) E% P  f4 X. I; L5 q2 S9 l

该用户从未签到

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-6-16 07:28 , Processed in 0.078125 second(s), 27 queries , Gzip On.

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

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

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