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

如何在Matlab中自定义colorbar

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-24 09:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x

. h% v5 R- g) s% S. Gmatlab画平面分布图时colorbar的设置是非常重要的,好的colorbar不仅使图像更美观,而且能够使人更容易捕捉图上传递的信息。用过matlab的同学都知道matlab默认的colormap是jet, 也就是你画完图后输入“colorbar” 它所显示出来的颜色。此外,matlab还自带了很多colormap, 如hsv, autumn, bone, colorcube等等。我们直接在命令窗口输入例如"colormap(hsv)" 就可以是平面图的颜色显示相应的colormap。/ V1 s2 V5 C) I

0 a! B: Z; l+ s3 p* c) `3 ?下面教大家如何自定义自己想要的colormap,方法十分简单。- y: C/ ]% r. p/ f  Q  ~
/ n* d& {% o: y: Y
以中国海的海面温度图为例:
' [( w0 Q9 ]7 |" z: Z8 p- [: O  P" ]3 _8 V
5 Z1 `0 K, a+ y  A
3 ?( p4 |1 O* h- ^0 H( y9 ~" l
这是一张有m_pcolor画出来的图,之后colormap是matlab默认的jet(即直接输入命令‘colorbar’显示的colormap)。& J  G% s6 l0 h  ?, Y

' {4 I; i: U$ o* i4 m% o( d) a4 w如果我们这是在命令窗口输入‘colormap(hsv)’,则会变成下面这张图:
4 a6 `) |' P' ~# Z: n# o& f# a' V/ y; Q- y% }5 _6 _

$ G2 M- f& U, U% J, a8 ~! \(请忽视图标题,截图很麻烦,见谅)9 }! I5 \$ {7 j; D- a  O% O

$ b: H7 `' y. X& Z9 P2 Q$ [% C如果我们这是想定义一种新的colormap,颜色从赤,橙,白,蓝,紫依次传递的话(如下图),应该怎么做?
7 p- M, W- P+ ]8 I! W+ _, L) A5 u3 i% k% h
7 _& R0 n9 F/ E# w' C1 J7 S* ?
这就要用到matlab的colormap Editor了。
2 K. W5 R0 Q. n  P  x  ]' G& H$ s, R/ ^. {& \, J4 J$ w
如下图:点击figrue窗口的Edit-colormap
- S* |7 M' d  J/ n1 z' G( p0 S
0 u/ I+ |- C, N: c( K3 N! D
; Z! P* `+ u) `6 M4 j3 @5 y5 s. {* j出现colormap Editor窗口:
: x5 ]8 L, Z& n6 J0 ]+ M# F- U7 e& d
5 M1 \! V  A2 q
0 M0 y- l1 b+ d9 D- J9 {! P我们可以利用这个窗口直接设置自定义colormap。
# C' F: d. L) f+ |2 J, E1 U5 i0 D; v9 V/ f( s
colormap Editor中有是一个色标尺,色标尺下方有一些滑块,其中两端的矩形滑块是固定的,不能删除;而中间的矩形+三角形滑块是可以添加,删除,或滑动的。在色标尺低端单击鼠标左键添加,选择某块滑块按Deletei键删除,鼠标按住某个滑块可左右滑动。" ~' k+ W/ _; `0 \  a. m
( L) G; o* o+ _; T
为了达到上述所说的“颜色从赤,橙,白,蓝,紫依次传递”的效果,我们先把中间的两个矩形+三角形滑块删除,如下图:
& i; q+ D6 U8 X2 x, R8 t
: {, g+ v  v& {
. @% S8 ?" Q2 T5 H由于上一张图colormap的两端都是红色,所以中间两块滑块删除后整个colormap只剩下红色一种颜色了。2 K' u, d6 P. m& f5 F" p

7 X: k& X  `  M* m! ]我们先从白色添加起,标尺上一共有64个格,为了左右平衡,我们先挑中间两格添加白色,具体步骤为:# b& H4 d& h0 A' t6 a) o4 ]9 \

& v; e. J8 ?# ]6 ]; I/ v1、点击标尺中间色格的下方,出现滑块(如下图)。
+ b* s( I8 h0 `' A8 d
/ l: F" c$ O0 ?  O
' k: A4 r8 S0 J6 d, H1 W7 Z" a, U3 A; X; }) G0 T! _
2、双击出现的滑块,出现颜色选择窗口,选择白色(如下图)。5 R0 j# ?! _# H# f8 c. F
6 l$ X' o) i9 G! j1 S

! Q4 E. P5 X" ^
; r& d: P: X' ?- i+ C$ p: v选完后图像就变成下面这样了:
5 o/ d  f# _% ~9 k- x& B# s; b4 ^7 Q/ d7 ]1 L

& c0 u" P7 S6 c0 G' k- q0 z- B7 r! d* R% u6 b+ W7 \
相同的方法选择“赤,橙,蓝,紫”,如下图:
9 u' j) g) T" Q, u) t4 j& |  U$ u
4 m0 [$ V1 v+ o! P- S  W - z( E( h& R2 J7 q' j
7 f4 w9 A  o& ?: S
但这时我们发现colormap并不能如我们所愿,因为中间出现了黄色跟绿色。我们注意在colormap Editor中有个Interpolating colorspace选项,由于刚刚我们是以colormap(hsv)为根本的,所以这里的颜色插值方式是hsv的,我们这是应该选择RGB。如下图:1 i- J3 R  e) V
* `% O' M+ k' V' n5 G  ^) q

: U/ e9 {6 g' r
# k3 ]5 B+ ~9 L% q- V# i好了,大功告成。' G- j. ~5 V5 c$ _0 `. ^

8 o6 [2 x0 s' `下面就是要保存自己设置的colormap以便今后画图时可以直接用了。8 V" [5 U2 ]  W  Y+ A" H

* H2 d) @) E2 g. n0 K, b3 D在命令传控输入:
+ v, v% }8 D6 J; o( C( R9 o
1 t! T# S+ C5 i) x2 Umycolor=colormap;%mycolor名称任意8 Z# I/ s8 d" f2 Y
, M* U; s1 k9 K) r
save mycolor mycolor;! L5 P+ D; ~! P' B
' y. _* w1 G9 p0 W7 }
下次画图时,只要先load mycolor; 再输入colormap(mycolor) 就可以直接用这个colorbar了。
/ [# C2 ~* X; j9 w! ]3 l/ U
' l0 E. H; z$ {# W, v% |4 S/ i还有一种colorbar不是渐变的,如下图:
4 G, B2 A& v/ T. c% [( l7 Y; o9 j( ~( u
# L% {) b$ J) c

7 ]5 j/ b5 Z- K这种colorbar的设置方式也大同小异。图中colorbar有5中颜色,那么我们就在colormap Editor中将头五种颜色设成图中颜色,再将其余颜色设成白色(不一定白色,其它颜色也可,主要是为了方便辨认)2 f' ?' m+ ]6 ^3 C% ~" G

! t- G& }# B* l- g4 |. d& Y. }
+ d" n5 Q) g8 h3 ~$ C$ M- r
% @& U& n* Q" f2 n' @! A这是我们在命令窗口中输入“colormap”,就会出现一个64*3的数组。
3 R% J3 R6 `; k1 \5 D# E. n1 `# `, X5 [, |- |

; N0 z0 l* S  A+ C8 H' c' Q: Y+ B* u+ c: R- t
注意的数组前五行就代表上面5种颜色,其余[1 1 1]代表白色。这是只要把前5行复制出来,写入新数组中。
* _3 s4 |8 I  G% f( n# V9 M; e4 K! j7 L
1 A0 r) V( E' T( ?
- @! d7 i) \: i* p# _, C; ^+ Z& n4 [& M8 _
再“save mycolor5 mycolor1”保存起来。这是在命令窗口输入“colormap(mycolor5)”就出现下图了:% c6 A/ b' z6 y% A9 l! a

8 b: N, D2 f( ?" x& c6 ?6 Y9 l + o5 t4 S, l3 Z& N
- I. ?9 w& f' G6 E
大功告成!!!
- v8 \% A* H8 Y4 o. d, h0 ~, Y( U( m! X7 }( p+ L% D
第一次写matlab教学,有点啰嗦,希望能够帮到大家!!
/ Q/ e1 F, O) i+ U
7 S- ?: p, s* U3 N
- r' Z, q7 P" H7 b" v1 x3 ?% W6 w' t9 V7 v- [1 I0 Z
" M, {. I2 L7 A0 o/ D- h1 q4 V7 O
0 Y2 F/ L4 ^3 y7 U" h
& }! J1 w6 [/ Z% q! o/ d
: |0 {2 I3 A, e1 k8 \# ~) p; p

24-5.png (34.91 KB, 下载次数: 0)

24-5.png

该用户从未签到

2#
发表于 2020-3-25 18:02 | 只看该作者
如何在Matlab中自定义colorbar
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-19 22:50 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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