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

如何在Matlab中自定义colorbar

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

# o" F* k/ t& \' H2 `matlab画平面分布图时colorbar的设置是非常重要的,好的colorbar不仅使图像更美观,而且能够使人更容易捕捉图上传递的信息。用过matlab的同学都知道matlab默认的colormap是jet, 也就是你画完图后输入“colorbar” 它所显示出来的颜色。此外,matlab还自带了很多colormap, 如hsv, autumn, bone, colorcube等等。我们直接在命令窗口输入例如"colormap(hsv)" 就可以是平面图的颜色显示相应的colormap。
/ j8 [: c* B6 H2 S) _( s) q6 E) F6 T' c8 Y  O  C1 \3 @# x
下面教大家如何自定义自己想要的colormap,方法十分简单。! O# b/ }. S9 w  y

' a, z. F, O2 E以中国海的海面温度图为例:0 A7 f+ i+ y. T9 e  E; `2 g
( V- }8 C0 C6 `% K
) j' X$ a# \+ @% C. P0 A4 D/ F. h

9 H2 c: Q& N/ A# D这是一张有m_pcolor画出来的图,之后colormap是matlab默认的jet(即直接输入命令‘colorbar’显示的colormap)。
! T8 ~7 H2 s% n; R9 [7 a0 z$ J& L+ ]8 ?: c& Y. l8 s4 x
如果我们这是在命令窗口输入‘colormap(hsv)’,则会变成下面这张图:
) N6 y4 _; J, U1 g8 q- h& }! }' J: j# ?$ m1 L% l; a* ]

; N2 ~9 B5 ^0 w! l, Z+ a(请忽视图标题,截图很麻烦,见谅)$ z6 h4 n- }: p' t* ]
6 F5 i" U' ~$ l* {! [; K8 E
如果我们这是想定义一种新的colormap,颜色从赤,橙,白,蓝,紫依次传递的话(如下图),应该怎么做?% i4 i7 B* Q- [
8 f8 q& E6 r% y: |$ o# ~  q
8 y% T3 A( k; h$ _9 n4 i- X
这就要用到matlab的colormap Editor了。7 U5 L. q; s2 `& I6 F. i( e

* i5 E; r9 p' d' [0 N& f2 q9 j如下图:点击figrue窗口的Edit-colormap' @( L$ _6 R( d: m

: n+ M# F9 O0 [" x & O  x( W! T3 M) \7 x5 v  I9 ^% T
出现colormap Editor窗口:5 F4 i: l4 b( j# L* F% y# X

0 ?7 q7 I  F5 |4 t$ m$ y* C
  N, z+ C6 H" c  j5 I2 \0 N( d$ E我们可以利用这个窗口直接设置自定义colormap。5 A, g/ g+ B5 X- P
9 r# X9 M9 u; d  @9 L2 s
colormap Editor中有是一个色标尺,色标尺下方有一些滑块,其中两端的矩形滑块是固定的,不能删除;而中间的矩形+三角形滑块是可以添加,删除,或滑动的。在色标尺低端单击鼠标左键添加,选择某块滑块按Deletei键删除,鼠标按住某个滑块可左右滑动。
6 t0 i+ M( s3 Z! H
$ Z& e% D1 |2 b9 C5 V为了达到上述所说的“颜色从赤,橙,白,蓝,紫依次传递”的效果,我们先把中间的两个矩形+三角形滑块删除,如下图:* v. g/ n& M4 g4 _% `
# v; i0 S5 T/ \) P/ m

- J, g' L! {- V/ I. e由于上一张图colormap的两端都是红色,所以中间两块滑块删除后整个colormap只剩下红色一种颜色了。# T' n" r. B8 T! Y6 y6 [
8 Q6 ?# a9 p) R: H
我们先从白色添加起,标尺上一共有64个格,为了左右平衡,我们先挑中间两格添加白色,具体步骤为:
) v( }" A+ \, Y( @: l2 n2 ]8 u
. Q, ?5 Z. G9 y! |1、点击标尺中间色格的下方,出现滑块(如下图)。
( i$ I- o+ j8 h0 r" i" A7 j$ B6 u4 C6 G7 R8 r% ?

+ M9 ^) w# ]) w" v% Y6 C, y/ F$ E9 \. A  z" G/ q$ G
2、双击出现的滑块,出现颜色选择窗口,选择白色(如下图)。$ U& M$ O& D7 Z: Z7 ?

" d. M: G, c* i* \: L4 s 9 D4 x, N$ t+ n8 C- J
# C! N. B7 T0 }* d
选完后图像就变成下面这样了:( [0 c& P1 t( V* h6 L! c

( ]0 l6 J% L8 w' m
6 v& w9 F& t/ g! G5 S1 a* x6 n" ?
0 f/ y( a. b6 j相同的方法选择“赤,橙,蓝,紫”,如下图:
7 M; d  n: T9 s7 a9 j/ y5 s
4 A/ C$ L9 e) B; Z4 v3 E2 f ; T" C2 _8 }- p

% u% d/ j3 \; T- K1 a! J* }5 w7 {但这时我们发现colormap并不能如我们所愿,因为中间出现了黄色跟绿色。我们注意在colormap Editor中有个Interpolating colorspace选项,由于刚刚我们是以colormap(hsv)为根本的,所以这里的颜色插值方式是hsv的,我们这是应该选择RGB。如下图:9 T9 d4 c; n, M6 T; u# Y5 a* c) ?

* S- k  U! {. e+ R# c, `8 l( G* N7 p- F. R
( {; |0 U5 U7 U: ]
好了,大功告成。! C* s; S" x1 ~1 y* U

* r5 p1 l' u5 v: u1 C" N+ I! z1 N下面就是要保存自己设置的colormap以便今后画图时可以直接用了。0 t% F7 W$ o6 Y# A+ e( Q6 P$ D! N# i* J

  c; x# B5 ~/ A) C1 |6 m' ~在命令传控输入:
9 }. F( Y9 R6 x3 z; Y1 }$ J: M: {5 u' t
mycolor=colormap;%mycolor名称任意
" o: n  Y# g$ S/ g, Q" J" a$ ?+ }
8 O' j- m$ w' u: F# ]" _4 Xsave mycolor mycolor;) q4 p4 @! x8 I

8 u" s, U* C$ x7 i3 S& h: y% L下次画图时,只要先load mycolor; 再输入colormap(mycolor) 就可以直接用这个colorbar了。  @; M2 [- @8 G& x
7 ?3 z, P5 O! F% y; e2 t. P
还有一种colorbar不是渐变的,如下图:# V" r: F  Y- C# q0 {- _/ O4 j. p
2 e& \/ J9 ~/ W; W/ Y# C

" M/ z  a+ q! o
0 `* l# y# V+ T0 J6 A这种colorbar的设置方式也大同小异。图中colorbar有5中颜色,那么我们就在colormap Editor中将头五种颜色设成图中颜色,再将其余颜色设成白色(不一定白色,其它颜色也可,主要是为了方便辨认)
) ^! }$ ?# v) }7 K$ b! u
% u+ d/ m6 X, @0 t; r5 Z
7 A7 f1 {  R; k: Q: F
: M: j! ^9 P& u这是我们在命令窗口中输入“colormap”,就会出现一个64*3的数组。7 n: m0 H: f# s& O* o
' ~, x, ]2 Y, m
6 J# j3 O* @) F9 x' @

) J$ L" H! }1 x; I0 _, w) ]1 w注意的数组前五行就代表上面5种颜色,其余[1 1 1]代表白色。这是只要把前5行复制出来,写入新数组中。
/ m- S* y0 A+ F6 P6 y9 [' P# d( ^
. B1 |; e# i/ ]. S2 }( X0 K9 F4 k
" U% b0 a0 C' o" T0 t$ w7 i4 r4 [% `3 M! ~; j! ]  U6 J6 z
再“save mycolor5 mycolor1”保存起来。这是在命令窗口输入“colormap(mycolor5)”就出现下图了:, @: k$ F* l* G) ?9 r
: G$ C% V, S: f) N7 g

" U9 j! h3 q9 B+ f  u+ z# k6 J6 s% W; ?; K# J
大功告成!!!9 X2 B0 k  \" E- n6 O1 x2 R
; y  v, I1 x, b6 L1 x
第一次写matlab教学,有点啰嗦,希望能够帮到大家!!
9 a) X4 Z( i8 T
+ y7 p8 U6 N+ _6 G8 x% _. W2 K/ V
  L9 R  _4 @7 C8 l! V$ D- M% q5 j: r! G0 u

8 S# k2 Y. v: l% `: J
; `$ [9 r2 M4 V  V5 M# [9 D4 U
4 C3 G. |$ {: e6 H
" T" C3 ?, Y, Y. ^

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

24-5.png

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-22 03:23 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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