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

MATLAB几种设置颜色的方法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-2-18 16:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
01

8 j- w/ i2 w9 M% T2 z& y用MATLAB已经有十多年了,不过开始对颜色有些挑剔还是最近几年的事。- T& y1 X5 l9 B9 V
2 Q! @4 n, O- w& M( q4 o: n/ f
最开始的几年,颜色设置的问题,无非就是plot曲线的时候,这应该是每个MATLAB用户都会碰到的情况。0 r$ G( x$ \- J/ g6 f; F! m

: b4 I8 U; @; H) d

5 s7 o7 d$ Z3 V& n. ]6 K9 j. `+ \这个问题很好解决,在网上很快就能找到答案。对于初学MATLAB的朋友,这里我推荐两份文档。
: f2 V+ J& y+ F1 `  R% X% D: w
, Z  p5 _. l/ y% T2 G* C6 L

  X8 `5 Z. d2 {2 O# D; s1 V$ N一份是MATLAB中文论坛的一篇帖子,主题是“Matlab中plot函数一共能调用多少种颜色?”。这篇帖子截止目前已经有将近35万的阅读量,足以见得有非常多朋友搜索过这个问题。
6 R5 o/ P* }+ p. T
: D* x: Q$ _  P$ y% u
9 f( x5 Z, v/ Q' q
另一份是MATLAB Help自带的介绍,通过命令窗口输入doc plot就可以了解这方面的应用,还有相应的例子可以用来加深理解。
! T$ H1 A! E0 q, V- `  G9 Y; H: R4 [9 y5 I- r& h0 ?/ m' {: W5 o) D, j
) b: X% _& d7 {$ i3 G$ T0 E  g
回到颜色设置这个问题上来,通过plot([1,2],[3,4],'r')就能将目标曲线设置成红色,其中'r'是红色的缩写。* W# ~5 R4 k2 p$ P! s+ x* x" x
* G- h# m" B) O$ u  j4 h) x
/ z4 t0 Z  O( g. \/ o# v2 e
除此之外,还有
* t* @. E6 o  K- b
' K9 N% w( ]+ L% b4 W( q% v颜色        字母3 K3 D: S+ M: q
绿        g$ `5 d( B/ D" M7 _9 n
蓝        b( _  I. M% g! t! s
蓝绿        c
6 [7 [; D& W! c( _3 X& P# [7 @紫红        m
( a! J& T/ r* M; J黄        y
  M' W  K$ |2 i+ B  T5 R黑        k
: z# K7 x# @: g2 n7 o8 ]1 L# {白        w, I7 R% X& ^$ e9 F' ^
6 _3 {& ?7 `% w& P$ E( w0 i4 P& v  x
02

8 m' ?1 v; |& f: K& |: d, u% _通过字母设置颜色这种方法,比较便捷,不过存在的问题是,颜色数量较少,并且个别颜色我实在欣赏不来,比如那发着光的黄和绿。* u: |& n* [( |' |# n; ]- p

& [6 [9 h( Q% `% O虽然心有不满,但是平时还是尽量避免多条曲线画在一张图上,于是在之后的很长一段时间内,只靠着红色和蓝色,咬咬牙,这么多年也就过来了,直到后来开始做GUI工具。; u. |% a, @5 w: X% v
6 o8 }5 Q% o# D- I
创建GUI,界面默认的背景是灰色,有一阵子,我很不喜欢这个背景颜色,总想换成白色。后来实在受不了了,就上网查,发现可以通过RGB数值去定义界面的颜色,比如设置窗体为白色
0 `7 q; o/ d# v* t4 |0 F1 p0 L3 t# q' M* T/ h; }0 E' W5 Q
figure('Color',[1,1,1])
$ a$ E4 \* G, P3 l- Z8 E6 q' r3 l5 g# e  e
RGB颜色定义的方式,适用在任何颜色定义的问题上,包括plot曲线的,画图注释text的颜色定义等等,具体的用法,在前面推荐的两个文档中也都有介绍。
+ X1 w* _( K6 H4 c
3 P7 m! r" ?( _8 o" q, S至于RGB如何定义数值实现想要的颜色,网上有不少材料,通过搜索关键词MATLAB+颜色表。6 t) q, ~' u$ j6 W1 I0 \9 B# k3 |

8 E* t* o) S; Q) ^( P4 q9 D. ?
7 H+ [* w6 Q2 |) N
4 ]) l; j5 i0 N4 s% }: G

/ u5 i. j, W, z, s
事实上,这张表很长,远不止我截取的部分。7 J; i# N7 O3 n# @# M$ J8 H
* ]9 k- `7 `, W/ S( s2 C
( F4 S! ~3 y& J+ ]* w2 j
颜色表的优点是,很全,几乎任何颜色应有尽有,而颜色表的缺点也是,太多了,多到让我难以选择。
4 n% _& y0 Y8 Q+ ?4 |
/ g% Y, _# Q0 N8 W/ X$ }& f& H' l! d

2 ?1 N: h# t/ u5 b7 E$ |上次碰到颜色选择障碍,还是给媳妇买口红的时候,口红看起来都红的差不多啊。- f. D( s. e0 {+ Z
* \% J! U. [" v& ~  c5 K
5 m+ L/ r0 u2 N) N/ l# w- V0 e2 f
03
) }1 g; X; q: h: ]2 h
人总是这么矛盾,字母设置颜色,嫌8种颜色太少,RGB设置颜色,嫌颜色表太长。
4 y: x) ^$ |" |$ b/ O4 r
* f( y2 V3 ]8 [2 Q5 G
: i, b7 Z6 Q& c, E; N6 J
其实保留几种比较常用的颜色RGB值就可以应对平时工作学习中的需求。
  O* j9 d5 C# a) m5 {- W+ l
6 ]1 e1 U& [: Z. S6 _, K

- e/ y* ?' T9 V1 Z: N0 s再后来就是这两年的事了。
: x; y' C* }0 [0 C% T3 h# D! s# }- ^) T

1 k' V4 H( c: @; m+ J3 Y" D在过去写一个GUI,只要需求明确了,几乎可以每两天写一个工具。1 x  R% s, z# ~+ o
, P9 T  W9 B8 G; D/ J2 a

( S$ W8 B' T1 Z) Q( T! a这些工具只是给自己用的,所以控件的布局,也都只是控件+String的形式,哪管他颜色、图标和快捷键,甚至好多比较严重的Bug都不在意,心里清楚哪哪有坑,别去踩就行。" G7 t) b# H' E, H* r' P" B- W0 Q

( R6 M. l7 D+ H% a* U

9 o5 f; a& E! V5 ~6 S, h不过这两年,偶尔会分享一些自己写的GUI给大家使用。$ e6 ~% u2 v( G; w( J$ G. J
: Y7 b4 \: f0 f( O+ p, W+ z- g
& C- a/ z7 a* o" i  z6 o( g* l( ]
字如其人,GUI也同样如此,于是我要比之前多花上3倍的时间去修复Bug,优化界面,提高用户友好度。审美在不在线另说,做GUI我一点也不随便。: p8 h3 i+ M/ q5 O' f

- z) ^( b1 g% P7 J# `
1 O' `. n/ F# a
曾经介绍过我在开发HaoFind的时候,设计了一个开机界面,是参考的Google的Logo。
2 n2 p' \* ^$ K% s5 M- O& @0 z- q+ Z# A9 I# q1 [
3 _2 Z) K6 I9 H$ E

& b1 L4 F) ~8 y& i! Y  D* Q+ i: h' a4 y; L6 k' C

$ D$ q4 I/ k# a! C' \$ b& t: `7 j# U

  G0 e4 G; A" p" [2 c
& e9 q" E4 n  o: O9 u
这下我再没办法去拿着颜色表和Logo的颜色做对比了,于是我给自己写了一个提取颜色RGB值的工具,叫做HaoColor。
. t! r1 P% m! v9 o0 {' ]3 s5 U+ ~' O6 L

/ t" n+ [7 B' L. W, B很高兴,Hao系列的小工具又迎来了一位新成员。& ~0 Y0 d9 U* ^+ ]
# c4 V# `$ q; y8 l" W7 \) G
: a6 T  K% d- @3 J1 n
HaoColor的使用很简单,点击Get Color的按钮之后,将鼠标移到目标颜色上,3秒之后将会显示目标颜色的RGB值。0 `; a9 c! t# W  ~9 |/ A* ^
; _# N' N2 V+ D3 t
5 R: m2 r6 K$ e4 l% V% P

& U8 S$ [: |2 X1 X8 }! ^0 O/ `5 D" V% V- `$ b. U4 |& d$ A- _2 f

2 ]( C5 i5 U( y. D
7 B9 u% x( q6 W' F6 P( W

9 @. w0 `/ d& ?6 N* d其中有一个很贴心的功能是,RGB值在显示的同时,已经复制了,不需要再去做额外的复制操作,可以直接在m脚本中进行粘贴。
6 y3 l/ l( I( u0 z9 {9 u; i1 t1 z& N
9 [1 P: f3 f6 @" V
这个功能其实在HaoTemplate工具中就已经使用了。
4 K7 O- Y5 R3 j8 y" v; Y5 t3 {6 l6 o) `
' K0 G& `5 H. f* }: A1 H) H3 L
3 M) i0 a4 k; W0 g
/ A2 w% Y! n. _  Q& L1 B4 f* B# ~. A, Q

8 t4 f: `  i" |( r: `
) f4 y/ {, P4 J1 Q/ `* `# ^: s  B: M. v+ ]/ [# [
+ l  @! i) A! I
当时在HaoTemplate发布后,有朋友留言说,这么多色块,得做多少个按钮啊。 5 W$ G" g* O, P; c# b

& ~* e6 e0 a2 y0 |3 p& u% W
$ I/ C& `3 S) k9 J) Q' L4 \
其实我在写这个工具的时候,就已经意识到这个问题了,所以我一个按钮都没做,直接放了一张Excel颜色表上去,用鼠标去读取颜色。
0 [% f; j: w  }4 u: c, K读取颜色的功能也很容易实现,用的是MATLAB截屏的功能,只截取鼠标所在的一个像素的图片,读取颜色数值。( V( Y+ s9 }8 t3 m! a  |, ^! s) l- r/ `
# F6 Q' g9 C! R+ H
% h" {: m% G+ q
04
' A4 _( i. b2 U5 p# b% c# P
9 \: s- e1 Q0 r8 r1 |; K" M9 V/ @
这位朋友的处理方式是,通过uisetcolor这个命令,调出MATLAB自带的调色板,选取所需的颜色,返回RGB的值。这个命令同样可以集成在GUI中,进行颜色的选取。; g9 I0 |# Q5 D

& x( R) B4 ]7 `( x
! }8 o( [' v7 |
5 P$ h- u' Z% [; X7 x# ]

# u% F9 x0 N( \, q8 G
# |. M3 E1 a  f9 Z* h

/ y( I) X9 w7 n3 N/ g1 f+ T如果只是从功能上来说,我个人认为,HaoColor的功能会比自带的调色板稍强一些,颜色选取的自由度更大。
4 |" D  \% {; E: p
; x5 a! P% F' w7 C9 x

$ y& x/ C8 S* _不过我觉得很有意思的地方,一个是调色板对话框中控件的弧度设置,这是接下来一段时间我很想去研究的。
  S) }& U1 B; q# F: U! ^6 c
0 l( i1 c5 [& }( \+ C( L
6 v* [9 r* l; {- z7 ]8 w0 S
4 `$ p7 N1 d( k8 B3 r+ [
; a0 o9 ?4 I. R2 |  E# _1 X
另一个有意思的是,在uisetcolor所在的文件夹,发现了不少其他有趣的功能,比如字体的设置" U% _( ^- R% W. N

. |# S6 j% r: v0 T  b  N

3 Z7 F3 g; u% D. N1 w

+ K5 T" `& G# @3 z% J% a4 T登录/注册后可看大图
. s7 L: [( g: r# B7 D
% U" _6 C9 O4 v4 W$ u+ J6 a
' w$ G' O# Y- C, }
除此之外还有很多其他工具,像之前一直使用的选取文件功能uigetfile,也在这个文件夹中。
* R$ F$ h& x$ D  `. T! p6 W1 r
% Q8 D% ~% T8 a由于之前只关注到自己要开发的GUI,忽略了这个文件夹中的其他有意思的功能,这也是在接下来一段时间想要去了解的,并且希望能够运用到以往的工具中去。
  a, W4 r6 f* R. R! S, e
( a) [( P/ ^8 Y
<End>

+ S3 p8 S" i, Z# U
3 p1 e4 x; V- A. T5 l/ @

该用户从未签到

2#
发表于 2020-2-27 16:10 | 只看该作者
MATLAB几种设置颜色的方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 23:28 , Processed in 0.171875 second(s), 23 queries , Gzip On.

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

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

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