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

如何在Matlab中自定义colorbar

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
: V, I: j0 D0 m8 B
matlab画平面分布图时colorbar的设置是非常重要的,好的colorbar不仅使图像更美观,而且能够使人更容易捕捉图上传递的信息。用过matlab的同学都知道matlab默认的colormap是jet, 也就是你画完图后输入“colorbar” 它所显示出来的颜色。此外,matlab还自带了很多colormap, 如hsv, autumn, bone, colorcube等等。我们直接在命令窗口输入例如"colormap(hsv)" 就可以是平面图的颜色显示相应的colormap。, q2 y5 u4 ~- a3 J5 Z$ s4 c2 s; \0 _: M

. ~! I4 n' \/ J) C- B下面教大家如何自定义自己想要的colormap,方法十分简单。+ @: T& q& `# C$ H& [* @1 s+ h

1 s2 Y  j1 `4 n, z3 v$ s以中国海的海面温度图为例:# r- W. ~+ W! u3 H: J1 D$ A
5 g8 e( D2 S1 A3 [0 @

+ `5 O! \! h" _& A& S  Q) e! q$ o. j' {% v4 t7 B
这是一张有m_pcolor画出来的图,之后colormap是matlab默认的jet(即直接输入命令‘colorbar’显示的colormap)。0 {( B) {$ K) w: |4 O4 N; c; [
" c" w! z5 w0 i
如果我们这是在命令窗口输入‘colormap(hsv)’,则会变成下面这张图:, s7 D( p( l0 ?5 t8 Q# t
0 r/ F2 n1 k1 [! p5 O2 L3 o
: h7 ^$ x; p3 |: s" o3 F! p( i
(请忽视图标题,截图很麻烦,见谅)
: q6 D5 D/ Z0 v# W1 j
$ W' v: o& ]. i( e/ Q' [- _如果我们这是想定义一种新的colormap,颜色从赤,橙,白,蓝,紫依次传递的话(如下图),应该怎么做?( ^( V. e3 e& c1 S6 U' o7 h/ x% D% f# Y

. `% @7 w# o1 |) a0 |9 W0 H. e
: N, k% r: R+ B这就要用到matlab的colormap Editor了。0 ^0 o+ }% I% g6 _- j
& g2 C: c  W7 j
如下图:点击figrue窗口的Edit-colormap2 F" E6 n' h7 H+ J

% T. x! W+ m' M1 d
8 D1 l% I& G  ]出现colormap Editor窗口:* `/ J* {5 P$ B/ n8 X

- P! i! d5 k) i$ F+ S" H  w) N ) u' u7 u2 T3 y3 K: n
我们可以利用这个窗口直接设置自定义colormap。
- X1 X, n/ x- v7 o6 A% g; I- [
7 f, O. b- U0 F+ e/ dcolormap Editor中有是一个色标尺,色标尺下方有一些滑块,其中两端的矩形滑块是固定的,不能删除;而中间的矩形+三角形滑块是可以添加,删除,或滑动的。在色标尺低端单击鼠标左键添加,选择某块滑块按Deletei键删除,鼠标按住某个滑块可左右滑动。
2 ^6 O* o) l( C  x2 M1 V0 l
0 X. n- m! j4 P( t为了达到上述所说的“颜色从赤,橙,白,蓝,紫依次传递”的效果,我们先把中间的两个矩形+三角形滑块删除,如下图:
8 ~+ `9 w5 L7 X3 y/ w0 q8 f% J( F3 H1 q4 J6 B

' p- ?3 z& l, L3 q" r/ r) R4 U由于上一张图colormap的两端都是红色,所以中间两块滑块删除后整个colormap只剩下红色一种颜色了。
% `$ S$ o, H' d; p7 [
0 s- t  }' A1 x, D我们先从白色添加起,标尺上一共有64个格,为了左右平衡,我们先挑中间两格添加白色,具体步骤为:2 R# F2 z3 K: d0 `( v
0 L/ P' p/ T2 C
1、点击标尺中间色格的下方,出现滑块(如下图)。
: y! F3 I2 v, O5 X
* Y1 ~7 l$ s, l: Z" [ ) G! v7 n; n( F% k/ z/ \

( l* @6 V9 Q- j4 D9 B2、双击出现的滑块,出现颜色选择窗口,选择白色(如下图)。, n+ O* G' _5 I! m. F
! g  f- @, o2 P' S. O, H, {2 a
$ h; K* W( N6 }" |* P; g
1 c" \( I& \- W4 W/ S
选完后图像就变成下面这样了:" ^# B& }2 ^& X; x0 r

( X' S: R! L0 g3 |8 E, v4 w
" d( `' t+ X+ K* @/ L/ R# o; w, B1 Q5 x* B- J" [" L
相同的方法选择“赤,橙,蓝,紫”,如下图:# i& c! C6 p& j' S
% F0 b# ]; ~) ^, K) Y" c) E1 g
7 d0 u- j$ j- A9 B3 v; |

+ q, e, @+ o: o2 J$ p5 }* u但这时我们发现colormap并不能如我们所愿,因为中间出现了黄色跟绿色。我们注意在colormap Editor中有个Interpolating colorspace选项,由于刚刚我们是以colormap(hsv)为根本的,所以这里的颜色插值方式是hsv的,我们这是应该选择RGB。如下图:
1 U( j) h5 c% `
: X* V3 }! o7 g# x  v% ^' u1 K8 ]. |5 T/ r

# O! z; L' c% @4 N+ i+ I好了,大功告成。2 j8 h: _2 S5 t4 p

# c/ g$ U7 t6 V2 T3 y7 W2 B5 ^) Z下面就是要保存自己设置的colormap以便今后画图时可以直接用了。& p* t; d& V5 S9 k6 X( w3 H$ p
/ t( c, z2 Z6 M
在命令传控输入:) J7 l8 c8 K/ `5 s! b; {

1 ]$ b3 {# v' {- b* g2 bmycolor=colormap;%mycolor名称任意- e1 C% Z8 R2 l$ |
3 n6 S) Q3 [6 n* d% W
save mycolor mycolor;- @! R7 e; ?- ?5 L+ U: m. Q
2 a1 A. e( ^% G! V$ v
下次画图时,只要先load mycolor; 再输入colormap(mycolor) 就可以直接用这个colorbar了。
5 J; e- s6 ?( w3 X7 @$ a5 p2 z8 d# D4 V  B
还有一种colorbar不是渐变的,如下图:5 v6 ^6 U2 x: _) L) x7 K
4 W3 l- u  N" U: n

+ q3 l7 a7 Q" ]) }9 g7 x
* Q/ X* Y- V) d) D" \2 _( E$ K这种colorbar的设置方式也大同小异。图中colorbar有5中颜色,那么我们就在colormap Editor中将头五种颜色设成图中颜色,再将其余颜色设成白色(不一定白色,其它颜色也可,主要是为了方便辨认)
4 G; T4 T% J: A, w1 N0 ]* Z9 ~4 U/ v9 p1 y* K" Y7 n" q
, j* |$ N* r4 I! P3 Y

2 m/ r4 p* i( `. k# w这是我们在命令窗口中输入“colormap”,就会出现一个64*3的数组。9 U/ j9 m3 o5 J1 e( g- I2 L

9 n0 Z; [8 x& n& _
: b2 I8 L8 A% ?% s
: x+ H# K6 R( g/ B) U注意的数组前五行就代表上面5种颜色,其余[1 1 1]代表白色。这是只要把前5行复制出来,写入新数组中。
/ `- k# i4 H* p" O; d3 \  a6 q6 ~) i- B9 g  h$ C

$ `! t" I! S- h1 Z
- b$ W9 l0 O8 H, L& B再“save mycolor5 mycolor1”保存起来。这是在命令窗口输入“colormap(mycolor5)”就出现下图了:
- I. H6 F% T8 ]4 B4 g- V
1 }7 d. L7 ^2 Q5 L- L2 z# t. K7 r
  L1 a  }1 k2 f3 z' k
  H$ j* P1 F) j8 E( }! i0 q大功告成!!!5 T7 ~$ _/ E2 p# Z/ @8 A3 w

# P8 c, z. E# |4 ]2 ~! O第一次写matlab教学,有点啰嗦,希望能够帮到大家!!
! X8 m) c0 O. H
* G2 t1 g0 I+ q" k, Q7 x
+ o' s: F) o" A7 [
4 y7 r2 ~7 k/ \7 J8 _2 f
; _- I% G0 v" D- S3 i9 ~. w. l- _$ j9 n# `7 s2 T7 w

6 S; q. t3 {* f: o  g6 _1 k: M3 w+ ?* Q: l, ^5 c

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

24-5.png

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-13 00:13 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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