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

如何在Matlab中自定义colorbar

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
" Z( H! z/ s; Q
matlab画平面分布图时colorbar的设置是非常重要的,好的colorbar不仅使图像更美观,而且能够使人更容易捕捉图上传递的信息。用过matlab的同学都知道matlab默认的colormap是jet, 也就是你画完图后输入“colorbar” 它所显示出来的颜色。此外,matlab还自带了很多colormap, 如hsv, autumn, bone, colorcube等等。我们直接在命令窗口输入例如"colormap(hsv)" 就可以是平面图的颜色显示相应的colormap。
* j- @& ]3 J8 o9 r; r. p" {: ]7 n1 Y+ v$ L' n" k! k
下面教大家如何自定义自己想要的colormap,方法十分简单。3 t' C2 S2 I; |+ d0 G$ t) f* b

% H# j* x# y1 N- m5 U; U; T' ?以中国海的海面温度图为例:
1 E& m$ o* ^; m- x6 r' Z: m
: t. ?) h3 X. G% l ; h& a& _0 D- O. R8 ?, N! C5 O+ C

) ?4 u! f4 `7 e这是一张有m_pcolor画出来的图,之后colormap是matlab默认的jet(即直接输入命令‘colorbar’显示的colormap)。
  V5 f) |! @0 i8 y+ w8 P# `0 G  I2 f4 ~$ Q5 Y- _) i# _. Y5 O0 Q
如果我们这是在命令窗口输入‘colormap(hsv)’,则会变成下面这张图:9 z5 i8 r* g; q6 r. p( S2 B, g/ g# ?8 m

' D0 g, i3 ?: `" I6 \. v, i . l4 Z4 i2 ]/ L; C! Y- y$ a! ?
(请忽视图标题,截图很麻烦,见谅)
$ r) u, ]1 j% Z2 U+ N
. i# R9 N' j, F* p4 V3 M# G如果我们这是想定义一种新的colormap,颜色从赤,橙,白,蓝,紫依次传递的话(如下图),应该怎么做?1 `) }4 N% \* [8 ^7 z5 y

- D7 ^1 l7 u2 h- L" s5 ^
% N; M( i4 w7 {+ f2 r6 W这就要用到matlab的colormap Editor了。+ F5 c3 c: L* x1 W: W: X$ j

. T" P4 ~, X+ u" p5 z! b4 _9 L4 d8 M0 b# G如下图:点击figrue窗口的Edit-colormap
7 r& a6 p+ }+ z- Y. k
1 M; J$ E& n2 [" g. @7 t 9 F: U' T* ^: ?( K- R+ B6 S
出现colormap Editor窗口:4 f; a; b0 N2 ]7 U8 K  @
% F* a) j% y" f+ L+ ^3 H

2 K& B! ]# r+ q! A* c& U7 V/ D: v我们可以利用这个窗口直接设置自定义colormap。3 G7 P3 a+ t6 T. F# z

& x3 |; g2 c* G% [  P- ?colormap Editor中有是一个色标尺,色标尺下方有一些滑块,其中两端的矩形滑块是固定的,不能删除;而中间的矩形+三角形滑块是可以添加,删除,或滑动的。在色标尺低端单击鼠标左键添加,选择某块滑块按Deletei键删除,鼠标按住某个滑块可左右滑动。
' b1 ?7 e$ A! o. X. I  y
: ~6 B, @1 ~- s. |, S- X为了达到上述所说的“颜色从赤,橙,白,蓝,紫依次传递”的效果,我们先把中间的两个矩形+三角形滑块删除,如下图:! O: u% y. c" i) a( Y# I- F4 _  g
9 p  f) ]" E% I& P$ j% R8 q0 ^6 b, J1 e
# U5 r6 J! a* `0 i& p0 H$ u7 |
由于上一张图colormap的两端都是红色,所以中间两块滑块删除后整个colormap只剩下红色一种颜色了。
6 W9 ^% X6 X  _
) L* Y. W" }. n5 j6 \我们先从白色添加起,标尺上一共有64个格,为了左右平衡,我们先挑中间两格添加白色,具体步骤为:5 Q. m( z0 C' ~% ^: l5 M6 N

0 q3 B3 Z$ m9 C+ N9 B1、点击标尺中间色格的下方,出现滑块(如下图)。
' L: X/ T' G5 L& ?* m- ]4 l
) v$ J% Q) _, f/ E" U 3 P. _  Q+ w2 S, {/ A9 K

  h! G6 y. z" D, f# Z4 o3 M2、双击出现的滑块,出现颜色选择窗口,选择白色(如下图)。. ?4 t+ e2 L  J' l) o

# B* E9 y3 o- v! b1 d4 ` 2 M6 E9 X9 r0 E* H
/ c- I% e0 C" _3 Y' g
选完后图像就变成下面这样了:
  Q; {% [: M" z) y" n* ~1 ?6 }- B( ^4 n- n4 E4 j7 j% J

4 [; l! _  e7 m4 y2 T6 l# w' J/ r4 |! w! W5 h$ q0 s1 G; I
相同的方法选择“赤,橙,蓝,紫”,如下图:, ~: R5 ^4 I; e6 W
. ~7 Y8 f' X, ^! v( X

" i, N0 ]2 M* b( L/ q- T# z( t3 a4 X/ c' N
但这时我们发现colormap并不能如我们所愿,因为中间出现了黄色跟绿色。我们注意在colormap Editor中有个Interpolating colorspace选项,由于刚刚我们是以colormap(hsv)为根本的,所以这里的颜色插值方式是hsv的,我们这是应该选择RGB。如下图:% w- M9 m+ ]- }$ c

) B' ~' q' s% Z& @% l9 k) J! K8 @& |9 i  A

* [7 k# n: Q+ N好了,大功告成。/ ?1 |5 Z2 ~3 W' s4 i5 L

7 `; E3 M- M$ \7 }; B下面就是要保存自己设置的colormap以便今后画图时可以直接用了。1 _% f( W/ A- g  r  E% U

8 f0 q- ]( G' h# A9 L5 z: k% M3 J: W在命令传控输入:
8 Q' n, h( N6 p8 W
. ~- D4 b# v9 {1 ?0 ^) ?+ v1 \! Cmycolor=colormap;%mycolor名称任意! n! N1 m' z" R+ N1 T2 v
- H% T& ^) D- j& R
save mycolor mycolor;
8 H- K: M/ Q  B. j3 O
; H0 R1 P7 v% f8 t下次画图时,只要先load mycolor; 再输入colormap(mycolor) 就可以直接用这个colorbar了。3 `" P0 d0 t& B  f

& u; b$ [% M/ g8 o; L* |% o还有一种colorbar不是渐变的,如下图:
/ R6 u% R& J4 d: x1 v
/ k( b$ @8 R4 b1 j- C1 ?6 ]
& Y2 o( c6 [: L& K, I6 R& f& L: c+ F& [& `) ]
这种colorbar的设置方式也大同小异。图中colorbar有5中颜色,那么我们就在colormap Editor中将头五种颜色设成图中颜色,再将其余颜色设成白色(不一定白色,其它颜色也可,主要是为了方便辨认)
2 v( V+ x9 X! p( {
0 [4 s7 G; a; h1 v' A! T' q9 k
& k7 t3 k2 j" G7 I5 ?; @+ @
, C: I& L& b: I8 m+ [; p/ O3 {这是我们在命令窗口中输入“colormap”,就会出现一个64*3的数组。
/ L4 ]0 Q1 a0 @1 F1 \. q/ P" i& m+ d1 u7 T$ t. p; ^
) ^& c. {: t/ [. h! X

; C) k; ^1 n- E+ J6 p/ O注意的数组前五行就代表上面5种颜色,其余[1 1 1]代表白色。这是只要把前5行复制出来,写入新数组中。
, B9 P  U* o; w& y2 Y+ p1 B
6 m- y$ {4 {: U& ^5 V  H3 H6 o
5 Y. w" k" e0 k2 O8 x0 S# K
7 U$ u( B( t* S( q+ s9 y2 H8 p再“save mycolor5 mycolor1”保存起来。这是在命令窗口输入“colormap(mycolor5)”就出现下图了:  x8 r* R4 M- ~$ n6 L( n0 w* S4 E
; s, L7 s9 c' ?% y, _, [- {" T- ?

, r; s0 G" b. F" m7 M7 k6 U- w& U, \" r
大功告成!!!
. r0 n5 c$ _) x& X; [) Q- N+ N3 T4 w3 Q# Z' K/ `% U& a
第一次写matlab教学,有点啰嗦,希望能够帮到大家!!
, Q* j9 p+ T# T% }( D& y% v* i0 l; S9 J

9 j: O& {7 ]2 D" l. ^/ v& y7 `* e) H1 K8 [7 |; X! r
/ T0 i/ @$ J3 A

. }7 _& I& V7 l' |5 U& _& @$ J( B- g6 t

. C0 n$ `- L# s

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

24-5.png

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 04:02 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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