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

2023-10-08 02:30

本文主要是介绍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 npimport matplotlib.pyplot as pltfrom matplotlib import cmfrom matplotlib.colors import ListedColormap, LinearSegmentedColormapPurples = 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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/162092

相关文章

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

基于Spring实现自定义错误信息返回详解

《基于Spring实现自定义错误信息返回详解》这篇文章主要为大家详细介绍了如何基于Spring实现自定义错误信息返回效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景目标实现产出背景Spring 提供了 @RestConChina编程trollerAdvice 用来实现 HTT

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

SpringBoot自定义注解如何解决公共字段填充问题

《SpringBoot自定义注解如何解决公共字段填充问题》本文介绍了在系统开发中,如何使用AOP切面编程实现公共字段自动填充的功能,从而简化代码,通过自定义注解和切面类,可以统一处理创建时间和修改时间... 目录1.1 问题分析1.2 实现思路1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3

dubbo3 filter(过滤器)如何自定义过滤器

《dubbo3filter(过滤器)如何自定义过滤器》dubbo3filter(过滤器)类似于javaweb中的filter和springmvc中的intercaptor,用于在请求发送前或到达前进... 目录dubbo3 filter(过滤器)简介dubbo 过滤器运行时机自定义 filter第一种 @A

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容