当前位置: 代码网 > it编程>编程语言>C/C++ > Matlab渐变色生成/编辑器专业版—ColorMapPro

Matlab渐变色生成/编辑器专业版—ColorMapPro

2024年08月06日 C/C++ 我要评论
全面升级!Matlab渐变颜色条(colormap)生成/编辑器专业版—ColorMapPro

渐变配色在科研绘图时十分常用,比如三维柱状图、特征渲染散点图热图曲面图等高线填充图等等,都需要使用渐变配色

虽说现成的渐变配色有很多,比如,在thecolor配色工具的渐变颜色库中便集成了近千种的渐变色:

然而,在很多时候,仍然需要我们自己来制作渐变颜色图

此外,一些渐变色仅由少量颜色组成,在一些场景应用时,会出现“波纹“现象,因此需要对其进行致密化处理;另一方面,如果我们就是想要七八种颜色组成的稀疏渐变色,那还需要对其进行稀疏化处理

还有一个问题是,当我们想要编辑颜色图,调节颜色的显示区间时,会发现matlab自带的colormapeditor有些难用,这个懂得都懂。

为了解决上述问题,我在今年6月份用matlab制作了一个colormap渐变色生成/编辑器。

推出以来,虽说得到了大家的一致好评,但实际应用了一段时间后,发现还有一些地方可以进一步增强。

新增功能1:颜色条二分化

假如我们绘制了这样一幅带光影的曲面图:

想要让colorbar上0以上的部分为棕色,0以下的部分为蓝色,该怎么操作呢?

很简单,只需要用colormappro的‘mode3’功能

n = 256;c = [146 080 051     196 151 105     248 220 195     255 255 255     143 214 239     094 179 226     048 106 180]/255;[map2,ca] = colormappro('color',c, ...                     % 待处理渐变色                        'number',n, ...                    % 生成渐变颜色数                        'center',0, ...                    % 二分化断点位置                        'maxcentermincolorid',[1 4 7], ... % 最大、中心、最小值颜色在c中的行号                        'mapdata',z(:), ...                % 待渲染特征                        'mode3');

其中,‘center’表示二分化中心,在此例中为0;‘maxcentermincolorid’表示颜色条最大值、中心以及最小值所对应颜色矩阵c的行号,此例中最大值对应棕色,行号为1,中心对应白色,行号为4,最小值对应蓝色,行号为7;ca为颜色条范围参数

然后:

% 赋色colormap(map2)colorbarcaxis(ca)

即可得到所需要的以0为中心的二分化对象

 具体示例程序见demo5

新增功能2:图片提取渐变色

旧版本中,在生成渐变色前,需要我们自己定义由少量颜色组成的基础颜色矩阵c,有些影响作图效率

新版本中,增加了图片取色功能,使用时,只需要在colormappro中增加‘copy’参数

%% colormappro取色生成渐变色n = 256;% 等间距模式map1 = colormappro('copy','number',n,'mode1');figureimage(permute(map1,[1,3,2]))% 非等间距模式ratio = [0.1 0.1 0.1 0.1 0.2 0.4];map2 = colormappro('copy','number',n,'ratio',ratio,'mode2');

然后打开图片,鼠标单击取点

即可快速得到想要的颜色条,以用于作图:

具体示例程序见demo4

功能1:生成渐变色颜色图

对于给定的颜色矩阵:

c = [  2  48  71      18 104 131      39 158 188     144 201 230     255 255 255]/255;

利用colormap工具,将颜色矩阵c与渐变色数量n作为输入参数,即可得到渐变色颜色图map:

n = 256;map = colormappro('color',c,'number',n,'mode1');

然后利用colormap(map)命令对已有数据图赋色:

具体示例程序见demo1

功能2:致密化与稀疏化

对于已有的渐变色颜色图,比如addcolorplus配色强化工具中的300号渐变色:

c = addcolorplus(300);% 绘图figureimage(permute(c,[1,3,2]))

如果觉得颜色渐变程度还不够,可以通过colormap工具,设置一个较大的渐变色数量n1

% 致密化后渐变色总数n1 = 256;% colormap颜色致密化处理map = colormappro('color',c,'number',n1,'mode1');% 绘图figureimage(permute(map,[1,3,2]))

而如果想要对其进行稀疏化处理,只需设置一个较小的渐变色数量n2

% 稀疏化后渐变色总数n2 = 7;% colormap颜色稀疏化处理map = colormappro('color',c,'number',n2,'mode1');% 绘图figureimage(permute(map,[1,3,2]))

具体示例程序见demo2

功能3:显示区间调节

上述两种功能均采用等间距模式生成渐变色

而colormap工具中还包括另一种模式:非等间距模式

对于给定的颜色矩阵c:

c = [068 004 090     065 062 133     048 104 141     031 146 139     053 183 119     145 213 066     248 230 032]/255;

首先定义比例参数ratio

ratio = [0.1 0.1 0.1 0.1 0.2 0.4];

具体来说,对于给定数量的渐变色颜色图,ratio中的0.4表示(145 213 066)和(248 230 032)两种颜色渐变的占比为40%,0.2表示(053 183 119)和(145 213 066)两种颜色渐变的占比为20%……

特别注意,ratio变量中数字的数量等于颜色矩阵c的行数减1,数字之和等于1,而且所有数字不能完全相等(完全相等就是等间距模式)

然后,利用colormap工具的‘mode2’生成非等间距渐变色:

map2 = colormappro('color',c,'number',n,'ratio',ratio,'mode2');

最后使用colormap(map)命令对已有数据图赋色即可:

具体示例程序见demo3

以上。

获取方式:

matlab渐变色生成/编辑器colormappro

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com