MATLAB如何自定义颜色图(colormap)

MATLAB有一套自己的颜色库,常用的都有,但是数量不算太多。我们有时候需要用到一些MATLAB没有的colormap,比如Python的Matplotlib就有很多的colormap,我们也有可能需要自己来定义一些渐变的颜色。本片笔记主要是介绍colormap如何自己定义或者如何从网络上下载自己需要的颜色图并且使用。

colormap的原理

何为colormap?其实就是一个N*3的数值矩阵,数字是0到1的数据,分别对应的是RGB通道的强度,比如红色就是[1,0,0]。而颜色图是一个颜色变化的图,当你把这个数据给MATLAB之后,MATLAB会按照这个colormap在绘制数据的时候自动插值。所以我们可以任意自己定义一个colormap,下面是一个例子,

color_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中得到我们需要的颜色图的矩阵数据

# To export colormap

# %%

import numpy as np

import matplotlib.pyplot as plt

from matplotlib import cm

from matplotlib.colors import ListedColormap, LinearSegmentedColormap

Purples = cm.get\_cmap('Purples', 256)
# %%
purple\_map=Purples(np.linspace(0,1,256))

# %%
np.savetxt('./purple\_color\_map.txt',purple\_map)

我们将得到的数据保存为一个$256\times 4$的矩阵,然后将数据保存为txt格式,再在MATLAB中导入并使用

clear data;
data=importdata('./purple_color_map.txt');
% 此处只取前列即可。
purple=data(:,1:3);
figure(2)
pcolor(x_grid,y_grid,z);colormap(purple);shading interp;colorbar;

得到的图如下,可以看见我们确实已经使用的是我们需要的颜色图了。

 

自定义颜色图

更加高阶的操作就是自定义颜色图了,方法和之前一样。比如我们的目标是希望颜色图是某三个颜色的渐变,即颜色1到颜色2再到颜色3,我们首先的知道这些颜色的RGB值,这个可以通过PS或者CorelDraw的颜色吸管根据获得,然后再自己写一个竖直的渐变的矩阵,我一般直接是线形变化的。下面是具体的实际操作,比如我的要求是我希望颜色由红到蓝再到绿,那么三个颜色为

​```
color_1=[1,0,0];
color_2=[0,0,1];
color_3=[0,1,0];
​```

假设绿色位于颜色图的中间,那么

num12=100;num23=100;
R_mat=[linspace(color_1(1),color_2(1),num12),linspace(color_2(1),color_3(1),num23)];
G_mat=[linspace(color_1(2),color_2(2),num12),linspace(color_2(2),color_3(2),num23)];
B_mat=[linspace(color_1(3),color_2(3),num12),linspace(color_2(3),color_3(3),num23)];
color_map_RGB=[R_mat',G_mat',B_mat'];
figure(2)
pcolor(x_grid,y_grid,z);colormap(color_map_RGB);shading interp;colorbar;

绘制出来的结果如下

你如果想改变颜色的位置只需要认为设置num12,num23的 比例即可。所以一旦搞懂了MATLAB使用颜色原理,我们就可以有非常大的自由度进行设计优化我们的颜色图了。

总结

本片笔记主要是总结了如何自定义MATLAB的颜色图或者从Python获取其颜色图在MATLAB使用,更加高阶的用法可以后续在尝试,但实际使用中目前的这些手段已经绝对是够了。

参考链接:知乎

### 如何在 MATLAB 中创建和使用自定义 Colormap 颜色 #### 自定义颜色的创建方法 为了满足特定需求,可以创建自定义颜色映射表(colormap)。这可以通过指定 RGB 值来实现。每种颜色由三个数值表示红、绿、蓝分量的比例,范围是从0到1之间的浮点数。 ```matlab % 定义一个简单的三色彩虹 colormap customMap = [ 1 0 0; % 红色 0 1 0; % 绿色 0 0 1]; % 蓝色 ``` 一旦有了这些RGB值组成的矩阵,就可以通过`colormap()`命令将其应用到当前形窗口中[^1]。 #### 将自定义Colormap应用于绘 当完成自定义colormap的设计之后,下一步就是把它设置给某个具体的可视化对象。比如,在绘制三维曲面时: ```matlab [X,Y,Z] = peaks; surf(X,Y,Z); shading interp; % 应用之前定义好的 customMap colormap(customMap); colorbar; % 显示颜色条以便查看效果 ``` 上述代码片段展示了如何利用 `peaks` 函数生成测试数据集,并对其执行表面渲染操作的同时指定了新的颜色方案。 #### 存储与加载自定义Colormap 对于希望重复使用的个性化配色方案来说,保存下来是非常重要的。MATLAB 提供了几种途径来进行这项工作: - **方式一**: 使用 M 文件记录整个过程,包括生成像以及设定相应的 colormaps 。这样做的好处是可以随时回顾完整的脚本逻辑。 - **方式二**: 利用 save 和 load 功能直接处理变量级别的存储。例如,如果有一个名为 myCustomColors 的 colormap 可以这样做: ```matlab save('myColorScheme.mat', 'myCustomColors'); % 保存 colormap 至文件 load('myColorScheme.mat'); % 加载已存档的 colormap ``` 这种方式允许用户轻松地交换不同的 color schemes 或者与其他同事分享成果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清纯世纪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值