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

news2024/11/18 19:35:01

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

虽说现成的渐变配色有很多,比如,在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Lambda Python 创建和使用 Layer

目标 由于 Python 代码中需要用到第三方的库, 在 Lambda 中可以通过创建自定义层(Layer)的方式来将这些依赖提供给 Lambda 运行环境. 下面演示创建一个包含第三方库 requests 的层, 以及如何在 Lambda 中调用 准备 zip 文件 首先在本地电脑上将相关依赖下载到名为 python 的…

32.多输入多输出通道

通道数是一个重要的超参数,通常是会仔细设计的。 在之前,我们仅展示了单个输入和单个输出通道的简化例子。 这使得我们可以将输入、卷积核和输出看作二维张量。 当我们添加通道时,我们的输入和隐藏的表示都变成了三维张量。例如&#xff0c…

OpenPCDet详细安装指南+单/多GPU训练演示

OpenPCDet详细安装指南单/多GPU训练演示前言个人环境一览安装环境安装的各版本1. 创建conda虚拟环境2. 安装PyTorch3. 安装spconv4. 安装PCDet5. 训练单GPU训练多GPU训练前言 本人总共花了两个晚上一个下午安装,中间因为各种版本错误、版本不兼容报各种奇奇怪怪的错…

Windows 下使用 Docker + MySQL 安装 Wiki.js

Windows 下使用 Docker MySQL 安装 Wiki.jsIntroductionChapter 1 配置数据库Part 1 数据库安装Part 2 创建 Wiki 相关配置并修改权限Chapter 2 配置 Wiki.jsPart 1 安装Part 2 配置 WikiIntroduction Wiki 是一种在网络上开放且可供多人协同创作的系统,比较著名的…

【触摸屏功能测试】昆仑通态MCGS——测试通过HJ212_TCPIP驱动4G功能发送212报文

1、触摸屏功能测试 型号:TPC7022Ni 测试内容: 实现4G触摸屏,通过自带的4G卡向平台发送HJ212报文 2、HJ212_TCPIP 驱动说明 2.1、驱动介绍 本驱动构件用于MCGS软件,通过污染物在线监控(监测)系统数据传输标准协议向下位机数采仪发送各类指…

MCU-51:静态数码管显示

目录一、数码管介绍2.1 介绍2.2 数码管引脚定义2.3 原理图二、要用到的C语言知识2.1 数组2.2 子函数三、数码管显示3.1 单个数码管显示3.2 通过定位函数实现数码管显示四、动态数码管显示一、数码管介绍 2.1 介绍 LED数码管:数码管是一种简单、廉价的显示器&#…

Word表格常见设置汇总

Word表格常见设置汇总 总结一些Word中常用的关于表格的设置问题。 文章目录1.居中设置2.隔页显示表格首行设置3.边框边线粗细及显示设置4.表格斜线设置5.单元格合并与拆分设置1.居中设置 全选要居中显示部分→布局→选择居中类型。 2.隔页显示表格首行设置 选择表格→表格属性→…

idea插件之自动生成时序图(Sequence Diagram)

前言 小伙们,你们有没有发现,身边经常有这样一些人,看着平时没怎么干活,到关键时候需要展示工作成果,会发现这些人也有工作成果,甚至比辛苦在干的人可能还要多一些。按常理推测,这绝对不是一件科…

【小程序】案例 - 本地生活(首页)

1. 首页效果以及实现步骤 新建项目并梳理项目结构 配置导航栏效果 配置 tabBar 效果 实现轮播图效果 实现九宫格效果 实现图片布局 2. 接口地址 获取轮播图数据列表的接口 【GET】 https://www.escook.cn/slides 获取九宫格数据列表的接口 【GET】 https://www.esco…

XXE工具——XXEinjection安装与使用

今天继续给大家介绍渗透测试相关知识,本文主要内容是XXE工具——XXEinjection安装与使用。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调&#xff1…

直播推流神器 Kplayer 手把手教你在B站7*24h全天直播

开始前的准备工作 Linux服务器 (1)KPlayer目前仅支持Linux环境并需要满足x86_64(amd64)与aarch64(arm64)CPU架构的硬件环境上运行,我们已经将相关依赖库静态链接至主程序中,这意味着你不需要额外的安装任何的第三方库来支持KPlayer的运行。 在后续的迭代…

【数据预处理】基于Pandas的数据预处理技术【前七个任务】

文章目录一.需求分析二.需求解决2.1 本次实验以california_housing加州房价数据集为例,下载数据集2.2 查看数据集的描述、特征及目标数据名称、数据条数、特征数量2.3 将数据读入pandas的DataFrame并转存到csv文件2.4 查看数据集各个特征的类型以及是否有空值2.5 对…

五年经验的前端社招被问:CPU 和 GPU 有什么区别?

CPU 和 GPU 的设计目标和整体架构的区别分析,并在全文最后使用通俗的例子做比喻帮助理解。 首先来看 CPU 和 GPU 的百科解释: CPU(Central ProcessingUnit,中央处理器):功能主要是解释计算机指令以及处理计…

【工作流Activiti7】2、Activiti7 与 Spring Boot 及 Spring Security 整合

1. 前言 其实,选择用Activiti7没别的原因,就是因为穷。但凡是有钱,谁还用开源版的啊,当然是用商业版啦。国外的工作流引擎没有考虑中国的实际情况,很多像回退、委派、撤销等等功能都没有,所以最省事的还是…

若依前后端分离框架去掉首页 登录后跳转至动态路由的第一个路由

若依前后端分离框架去掉首页 登录后跳转至动态路由的第一个路由若依框架VUE前端界面,登录后默认跳转至动态路由第一路由(第一个子菜单)一、登录后跳转第一路由界面二、设置路由的首页路径,方便后续的获取三、点击若依的logo跳转的…

字符串函数(4)--strtok函数和strerror函数

1.strtok函数 — 分割字符串函数 2.strerror函数 — 错误报告函数 1.strstok函数的用法 char* strtok(char* str, const char* delimiters);直接看函数的声明: 参数1:要切割的地址,参数2:切割时的标记物 注意:strt…

单链表的python实现

首先说下线性表,线性表是一种最基本,最简单的数据结构,通俗点讲就是一维的存储数据的结构。 线性表分为顺序表和链接表: 顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或…

Nginx安装配置及vue项目部署【Centos7】

Background 网上好多都是源码安装,各种编译环境安装配置,感觉太麻烦了,这里直接下载一个rpm包就行了,离线安装也方便。 1、nginx rpm包下载 选择你要使用的版本下载。 nginx官方下载地址:http://nginx.org/packages/ce…

垃圾回收机制

1.什么场景下该使用什么垃圾回收策略? (1).对内存要求苛刻的场景 想办法提高对象的回收效率,尽可能的多回收一些对象,腾出更多内存 (2).在CPU使用率较高的情况下 降低高并发时垃圾回收频率,让CPU更多地去执行业务而不是垃圾回收 …

一文搞懂 Redis 架构演化之路

现如今 Redis 变得越来越流行,几乎在很多项目中都要被用到,不知道你在使用 Redis 时,有没有思考过,Redis 到底是如何稳定、高性能地提供服务的? 我使用 Redis 的场景很简单,只使用单机版 Redis 会有什么问…