Matlab调用python内置的colormap

亲爱的观众老爷们,我又双叒叕来啦~

上回咱们讨论到怎么在matlab里面自定义colormap,严格来说也不是自定义。是怎么把别人的漂亮colormap偷过来,啊不对,是借鉴过来。我们来简单回顾一下,用colormap给图片上色的本质其实就是建立一个二维矩阵数值与一个RGB值的映射关系。简单来说就是一个数值对应一种颜色。由于这个colormap在生成的过程中会用到插值算法,所以映射过程并不一定需要量化。(当然这些解释并不十分严谨,大概懂这个意思就好)

由于受到截图软件分辨率以及手动操作的误差限制,所截取的colormap并不完全清晰准确。同时此前的代码并未模块化,所以还存在着直接调用的难度。后来我发现,python里有个matplotlib库,里面几乎涵盖了所有常见的colormap,用来画图非常方便。但仍存在一个问题,我不会用python处理图片…因此,我提出了从python软件里导出内置的colormap三维颜色矩阵并导入matlab进行绘图的想法。最为简单直接地做法就是,将颜色矩阵以txt文件的格式保存下来,并由matlab加载画图。

话不多说,上代码:

#python****************************
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

# 获取名为‘viridis’的调色板,颜色列表为256,即包含256种颜色
cmap = mpl.cm.get_cmap("viridis",256)
print(cmap)
print(type(cmap))
print(cmap(range(256)))
print(255*cmap(range(256)))

np.savetxt("viridis.txt", cmap(range(256)))

但实际上导出来的是个四维矩阵,不过我暂时也不清楚最后一维是什么。只用前三个RGB画图绝对没错。现在矩阵已经保存为viridis.txt格式了,接下来我们用matlab导入画图试试:

%%  Matlab*****************************************

clear,clc,close all;

load('viridis.txt');
cm_viridis = viridis(:,1:3);

[x,y] = meshgrid(linspace(-1,1,100),linspace(-1,1,100));
[theta,~] = cart2pol(x,y);

figure,imagesc(theta),colormap(cm_viridis),title('spiral_phase'),axis square,axis off;
colorbar;
cmap = colormap;

Matlab程序里面简单生成了一个螺旋相位,并用导入的三维矩阵上了色。现在让我们来看看伪彩色图的情况如何。
Colormap_viridis
就这么说吧,简直不能太完美。之后可以自行将这个矩阵保存为.mat文件并进行更进一步的封装,就能够像调用系统默认colormap一样调用导入的colormap,以及自定义的colormap。
什么什么?你不知道常用的colormap有哪些?还不知道他们叫什么名字?
上lian(饶舌)接:
https://blog.csdn.net/weixin_44237337/article/details/116521052
https://blog.csdn.net/weixin_43326122/article/details/107089680
这两位博主列的还是比较全面的,或者直接上官网查询吧
https://matplotlib.org/stable/tutorials/colors/colormaps.html

另外,我也尝试着向kimi问了一下这个问题,起初以为他的回答是错误的,但后来仔细验证了一下发现是对的。这里也po出来参照一下:

import numpy as np
import matplotlib.pyplot as plt

# 选择内置的颜色映射
cmap = plt.get_cmap('viridis')

# 生成一个归一化的数据数组,例如从0到1的100个数据点
data = np.linspace(0, 1, 100)

# 应用颜色映射获取颜色矩阵,颜色矩阵中的每个元素是一个归一化的RGB三元组
color_matrix_normalized = cmap(data)

# 将归一化的RGB值转换为0-255范围的整数
color_matrix = (color_matrix_normalized * 255).astype(np.uint8)

# 打印RGB三元矩阵
print(color_matrix)

可以用PPT里面的颜色填充,其他颜色选项里面对颜色进行更改判断。发现kimiYYDS!
如果看腻了这些定义好的colormap,或许可以尝试着自己做个调色板(真正意义上的自定义)。不过我现在越看这些颜色图越觉得好看,怎么看都看不腻。看来我离真正的自定义还差的hin远呢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值