MATLAB如何自定义颜色曲线
MATLAB #Colormap
MATLAB有一套自己的颜色库,常用的都有,但是数量不算太多。我们有时候需要用到一些MATLAB没有的colormap,比如Python的Matplotlib就有很多的colormap,我们也有可能需要自己来定义一些渐变的颜色。本片笔记主要是介绍colormap如何自己定义或者如何从网络上下载自己需要的颜色图并且使用。
colormap的原理
何为colormap?其实就是一个[1,0,0]
。而颜色图是一个颜色变化的图,当你把这个数据给MATLAB之后,MATLAB会按照这个colormap在绘制数据的时候自动插值。所以我们可以任意自己定义一个colormap,下面是一个例子,1
2
3
4
5
6
7
8color_map_mine=[linspace(0,1,100)',linspace(0,1,100)',linspace(0,0.5,100)'];
x=linspace(-3,3,200);
y=linspace(-3,3,200);
[x_grid,y_grid]=meshgrid(x,y);
z=sin(x_grid).*cos(y_grid);
pcolor(x_grid,y_grid,z);colormap(color_map_mine);shading interp;
获取Python的颜色图?
Python有非常丰富的颜色图,比如下面的网站
Choosing Colormaps in Matplotlib
就有比价多的颜色图种类,
比如我们需要图里面的purples
颜色图应该如何操作呢?我们首先需要在python中得到我们需要的颜色图的矩阵数据
1 | # To export colormap |
我们将得到的数据保存为一个
1 | clear data; |
得到的图如下,可以看见我们确实已经使用的是我们需要的颜色图了。
自定义颜色图
更加高阶的操作就是自定义颜色图了,方法和之前一样。比如我们的目标是希望颜色图是某三个颜色的渐变,即颜色1到颜色2再到颜色3,我们首先的知道这些颜色的RGB值,这个可以通过PS或者CorelDraw的颜色吸管根据获得,然后再自己写一个竖直的渐变的矩阵,我一般直接是线形变化的。下面是具体的实际操作,比如我的要求是我希望颜色由红到蓝再到绿,那么三个颜色为
1 | color_1=[1,0,0]; |
假设绿色位于颜色图的中间,那么
1 | num12=100;num23=100; |
绘制出来的结果如下
你如果想改变颜色的位置只需要认为设置num12,num23
的 比例即可。所以一旦搞懂了MATLAB使用颜色原理,我们就可以有非常大的自由度进行设计优化我们的颜色图了。
总结
本片笔记主要是总结了如何自定义MATLAB的颜色图或者从Python获取其颜色图在MATLAB使用,更加高阶的用法可以后续在尝试,但实际使用中目前的这些手段已经绝对是够了。