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

如何在Matlab中自定义colorbar

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
' t; h8 X5 J" Y' l6 o3 \
matlab画平面分布图时colorbar的设置是非常重要的,好的colorbar不仅使图像更美观,而且能够使人更容易捕捉图上传递的信息。用过matlab的同学都知道matlab默认的colormap是jet, 也就是你画完图后输入“colorbar” 它所显示出来的颜色。此外,matlab还自带了很多colormap, 如hsv, autumn, bone, colorcube等等。我们直接在命令窗口输入例如"colormap(hsv)" 就可以是平面图的颜色显示相应的colormap。0 i* p. L) m; f4 A7 e0 d& J

0 w- U/ ?& B! g$ O下面教大家如何自定义自己想要的colormap,方法十分简单。/ C8 T; B3 T3 k; U

" N. i# A/ x2 A* b8 N7 r' T以中国海的海面温度图为例:
, M( n9 h" p2 u" w" Y8 u; o9 K6 K7 E* i- k# l

5 O. p) b# k! a% C7 z1 w: `4 ~5 K3 W4 T  Y' ?$ G. l; a+ C1 C7 w4 M
这是一张有m_pcolor画出来的图,之后colormap是matlab默认的jet(即直接输入命令‘colorbar’显示的colormap)。8 P% ~; }0 ?6 m, X
! p- P+ F1 H7 r' g7 E- c
如果我们这是在命令窗口输入‘colormap(hsv)’,则会变成下面这张图:6 s6 W  v# G0 L, S
0 x1 T3 O! j/ G' v: ~9 H4 e

( a& Y7 z$ e. p) v/ y; K(请忽视图标题,截图很麻烦,见谅)) Y3 f; h+ [; t6 [5 K3 ^

; D0 f7 a( b7 g: [' _7 M如果我们这是想定义一种新的colormap,颜色从赤,橙,白,蓝,紫依次传递的话(如下图),应该怎么做?9 S5 x1 F5 y* i+ L
- _9 H, z7 ?- M

3 }& c# ?8 r! g, c这就要用到matlab的colormap Editor了。
0 f% |  h8 N5 ^6 d# E/ h- |, y/ G6 H; A
1 q1 ~# Z% h& q/ L如下图:点击figrue窗口的Edit-colormap
" {- ]! A. Z' g6 C7 o4 [* o- {( w6 L9 p& n7 u
' _0 C- g3 B% l8 @" U7 O7 A8 ~
出现colormap Editor窗口:  Y# R; C, p' v3 N8 z) {1 ]

5 ^4 h' E3 W: Q4 { 2 s  S6 w+ V) z. b
我们可以利用这个窗口直接设置自定义colormap。
& Z( g, }; |% ?2 u) V+ q9 T8 v, e4 Z8 K  ?  C) t! u1 p
colormap Editor中有是一个色标尺,色标尺下方有一些滑块,其中两端的矩形滑块是固定的,不能删除;而中间的矩形+三角形滑块是可以添加,删除,或滑动的。在色标尺低端单击鼠标左键添加,选择某块滑块按Deletei键删除,鼠标按住某个滑块可左右滑动。
$ O1 P  g2 j2 L- K; B* ^; n2 K
为了达到上述所说的“颜色从赤,橙,白,蓝,紫依次传递”的效果,我们先把中间的两个矩形+三角形滑块删除,如下图:- g: ]3 w. s1 r7 m

! b; Z  G1 R. L) w: i' Z9 D ) O4 X# o9 ?3 j' X0 h/ M
由于上一张图colormap的两端都是红色,所以中间两块滑块删除后整个colormap只剩下红色一种颜色了。
+ f$ U, w8 c  {) e* u9 o) t" M, a( W5 K6 Y! \, C+ v
我们先从白色添加起,标尺上一共有64个格,为了左右平衡,我们先挑中间两格添加白色,具体步骤为:
2 p/ r1 \5 ~/ h: T# z1 h
. F$ ]4 ~1 e7 n0 d6 V* y1、点击标尺中间色格的下方,出现滑块(如下图)。4 l: ^8 [, x8 ?& x( i  o$ }

$ q# ~! u& M4 O / Y+ @' X# n) }

$ U# t: x. b, @! U* O# k4 H2、双击出现的滑块,出现颜色选择窗口,选择白色(如下图)。7 j: j+ e( v$ K& P

0 F+ f) @; w1 ~' P/ h   u, u9 S$ o- n7 ?9 \

) f* a, \  U4 O# _8 g, v1 a  C选完后图像就变成下面这样了:
" ]9 o/ p# ?1 H3 V
2 f+ D) z. q  R7 z- X+ z: d' o  i
4 W1 Q6 M9 Q0 j& d2 ^
5 G2 e# C$ Y& p相同的方法选择“赤,橙,蓝,紫”,如下图:/ m' F8 c& O( n

) W' E4 J# c% l5 @- Z8 q * J4 y! x8 l7 C$ n% g  }2 e
( D* W. Z/ B( s- B$ B  y& G2 G5 X6 g
但这时我们发现colormap并不能如我们所愿,因为中间出现了黄色跟绿色。我们注意在colormap Editor中有个Interpolating colorspace选项,由于刚刚我们是以colormap(hsv)为根本的,所以这里的颜色插值方式是hsv的,我们这是应该选择RGB。如下图:" a1 r0 z: J- w" [4 L2 K
+ K+ f" Z7 \3 ^6 \2 B6 ^
) N# q5 ^- n" S; m5 e

  _8 C7 k/ w; a2 O* c好了,大功告成。
7 C/ A! t! @2 A) f3 y. G! m9 l7 R( p- n4 k
下面就是要保存自己设置的colormap以便今后画图时可以直接用了。
  e& y) V, n, H' f' `* x1 W/ i9 O# L$ Q; l, _+ M$ q; e# F
在命令传控输入:
7 k/ i% Z; o" _  C- i) P
  Y; h# O( i- O  D1 e7 |mycolor=colormap;%mycolor名称任意$ C" J. C: k8 I, D% [& K

5 h/ E$ I" R3 O3 Z! Msave mycolor mycolor;
# H. A" p5 R- s: q
; c% v7 S  v; ?& S' ?0 ~, E- f下次画图时,只要先load mycolor; 再输入colormap(mycolor) 就可以直接用这个colorbar了。
; ?6 u& d8 J, D' ~% e2 j: a, G2 N; k3 w) g: u# Q
还有一种colorbar不是渐变的,如下图:
2 S* [* \& m' a( [
7 F( x0 V$ }# ~7 A
* F" |- B  W( a* {2 b
+ L( S$ p; a4 _" {+ _* @这种colorbar的设置方式也大同小异。图中colorbar有5中颜色,那么我们就在colormap Editor中将头五种颜色设成图中颜色,再将其余颜色设成白色(不一定白色,其它颜色也可,主要是为了方便辨认)
: W& U6 @9 Q0 E. D& W
6 L6 V) |$ m3 c2 O5 R5 w( ?2 p. {7 i % j- R5 n  k. b! A, G
2 @8 t6 o+ |' C/ U/ q# Y
这是我们在命令窗口中输入“colormap”,就会出现一个64*3的数组。; G# L$ ^8 ]: d* j
  Q, I7 ~5 O1 H
  g) f4 F9 s7 r: m7 |+ z% q6 I% e4 X

9 p. E9 Y8 @5 `0 h" x4 f0 N注意的数组前五行就代表上面5种颜色,其余[1 1 1]代表白色。这是只要把前5行复制出来,写入新数组中。& r' Z8 Y0 [, H4 G) K

& v4 n& ~0 F1 ]* P7 Q% c
, _3 P# ~( Y# W5 L2 G9 {2 F9 m  D8 y% }. Q7 n9 a8 q8 ?
再“save mycolor5 mycolor1”保存起来。这是在命令窗口输入“colormap(mycolor5)”就出现下图了:- c" k% X7 R/ C$ q5 k. h* @) \
7 _  ^9 x4 x, c; @
% h7 w1 n$ ?( H$ j

* ]- i% Z) ?4 @& C6 W' \1 l$ i; r大功告成!!!
+ N/ m4 W+ e0 ^  C9 _& N
; p3 h- B6 }* o. r& }第一次写matlab教学,有点啰嗦,希望能够帮到大家!!
4 H, h+ F) [9 ]: u9 E; M
5 R; `  M/ o% q! Y9 @. p% H5 U0 j: D5 d" i: \$ e6 z' h/ {

" O) `7 o# N5 d; \1 N  S
$ E' m4 ~! Z  m
- A3 k- ?- N0 j- U- A, H. I7 z/ O$ B$ K# p6 D

7 }3 }6 S, a4 T7 w

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

24-5.png

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-2 19:41 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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