Matlab中设置colormap为条纹式或渐变式方法

文章讲述了在MATLAB中如何创建自定义colormap,尤其是如何处理颜色数量较少时导致的条纹效果。通过插值方法可以增加颜色数量,实现颜色的平滑过渡。此外,也介绍了在MATLABGUI界面中编辑colormap大小和颜色空间来达到同样效果的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近使用matlab绘图过程中需要自定义colormap,发现定义颜色过少时colormap中使用的颜色只有设置的几种,没有很好的形成自然的过渡渐变。

1. 条纹式colormap

当用于定义colormap的颜色数量较小时,各个颜色变化时分界线明显。
在这里插入图片描述

% A中每一行代表定义的一种颜色(RGB数值表示)
A = [068 004 090
     065 062 133
     048 104 141
     031 146 139
     053 183 119
     145 213 066
     248 230 032]/255;
% 使用A中定义的colormap
figure;
colormap(A);
imagesc(rescale(D1)), title('Euclidean')
colorbar

2. 渐变式colormap

当用于定义colormap的颜色数量较小时,各个颜色变化时分界线明显。若想过渡的更为自然,将条纹式变为渐变式只需要在定义colormap式添加更多的颜色即可。一种简单的方法:首先定义几种关键颜色得到颜色矩阵 A A A,然后在这几个颜色值之间进行插值从而对矩阵 A A A中的颜色数量进行扩充,得到新的颜色矩阵 n e w m a p newmap newmap,新的颜色矩阵就会产生更为自然的渐变效果。
在这里插入图片描述

A = [068 004 090
     065 062 133
     048 104 141
     031 146 139
     053 183 119
     145 213 066
     248 230 032]/255;
% 插值颜色数量
nColors = 256;
% 对 colormap 进行插值,通过插值可以将colormap从条纹式变为渐变式
newmap = interp1(1:size(A,1), A, linspace(1, size(A,1), nColors), 'linear');
figure
% 将newmap中定义的colormap 应用于图像
colormap(newmap);
imagesc(rescale(D1)), title('Euclidean')
colorbar

3.补充说明

3.1 通过在matlab的GUI界面操作也可以实现颜色矩阵的扩充。

(1)绘制好的图像
在这里插入图片描述
(2)工具栏中编辑选项卡 → \to 颜色图
在这里插入图片描述
(3)由于我们只在颜色矩阵 A A A中定义了 7 种颜色,因此编辑大小和颜色空间中Label此时的数值为 7。
在这里插入图片描述
(4)将编辑大小和颜色空间中Label的数值增大到256,可见此时已经由条纹式变为了渐变式,实现了和程序插值同样的效果。

Label表示颜色空间中的颜色数,其有效范围为 [1, 1000] 内的整数。

3.2 通过在matlab的GUI界面操作也可以实现颜色矩阵的定义。

在下图位置中可以通过GUI界面完成colormap中颜色的自定义。
在这里插入图片描述

4 推荐阅读

[1] MATLAB | 有关数值矩阵、颜色图及颜色列表的技巧整理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值