Matlab平台读取颜色条图片制作出自己的颜色条

版权声明:本文为CSDN博主「微露」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhouhucheng00/article/details/85774492


概述:基于matlab平台,读取一张已有的颜色条图片,依据该图片制作属于自己的颜色条,并将制作好的颜色条用于数据可视化。


绘制图形的颜色配色方案很重要,但又不易于实现。有时,我们通过阅读文献可以找到美观的配色方案,但怎么将这些配色方案用于自己的数据可视化呢?例如怎样把文献中配色较好的颜色条用于自己的数据可视化呢?下面例举出我的一种解决思路:

首先使用截图工具将文献中好看的颜色条截取出来保存为图片;
依据截取的颜色条图片进行简单的图片处理,制作成属于自己的颜色条;
将制作好的颜色条用于自己的数据可视化。
比如,通过阅读文献,觉得以下的图片中颜色条很适合于自己的数据显示。

图片来源于:Ji Hyun Ko, Phoebe G Spetsieris, David Eidelberg; Network Structure and Function in Parkinson’s Disease, Cerebral Cortex, Volume 28, Issue 12, 1 December 2018, Pages 4121–4135, https://doi.org/10.1093/cercor/bhx267

使用截图工具截取的颜色条如下(注意:仅截取颜色条部分,截取的大小没有关系,但要保证截取了整个颜色条),并将该图片进行保存,如文件名为1.png。

Alt

使用以下代码制作属于自己的颜色条,并将该颜色条用于数据可视化:

clc;clear ;close all;

%根据一张颜色条的截图读取颜色值来制作自己的颜色条

[filename, pathname] = uigetfile({'*.jpg;*.png;*.tif;*.tiff'}, '读取图片文件'); %选择图片文件
if isequal(filename,0)   %判断是否选择
   msgbox('没有选择任何图片');
else
   pathfile=fullfile(pathname, filename);  %获得图片路径
   img=imread(pathfile);     %将图片读入矩阵

end

[a,b,c]=size(img);

if a>b  %当颜色条竖着时
        color=img(:,round(b/2),:);    %得到中间一条的颜色信息
        colorfinal=reshape(color,a,3);   % 最后得到中间一条每个点的RGB
        colorfinal=double(colorfinal);
        colorfinal=colorfinal./255;  %需要转化成双精度,0-1之间的数值
        colorfinal=flipud(colorfinal);%上下翻转
        colormap(colorfinal) ; %查看制作好的颜色条
        colorbar;
        ColorMap_me=colorfinal;
else  %当颜色条横着时
        color=img(round(a/2),:,:);    %  得到中间一条的颜色信息
        colorfinal=reshape(color,b,3);   %  最后得到中间一条每个点的RGB
        colorfinal=double(colorfinal);
        colorfinal=colorfinal./255; %  需要转化成双精度,0-1之间的数值
        colorfinal=flipud(colorfinal);%上下翻转
        colormap(colorfinal) ;  %查看制作好的颜色条
        colorbar;
        ColorMap_me=colorfinal;
end

save ColorMap_me ColorMap_me %保存制作好的颜色条

correlation_matrix=corr(rand(10,10)); %生成随机相关矩阵

figure;
imagesc(correlation_matrix);
colorbar;
title('基于matlab默认的颜色条进行显示','FontSize',16,'FontWeight','bold' )

figure;
colormap(ColorMap_me) %应用自己制作的颜色条进行显示 ##here
imagesc(correlation_matrix);
colorbar;
title('基于自己制作的颜色条进行显示','FontSize',16,'FontWeight','bold' )

运行该代码,会填出读取图片文件的提示框,将刚刚保存的截取的颜色条图片1.png选中并确定,可完成运行并保存制作好的颜色条。

制作颜色条其实就是将读取的颜色条图片的中线对应RGB值取出作为颜色条ColorMap_me的RGB通道的值。

结果如下所示,同时将matlab默认的颜色条与自己制作的颜色条进行对比显示:
基于matlab默认的颜色条进行显示结果如下:

Matlab平台读取颜色条图片制作出自己的颜色条_第1张图片

基于自己制作的颜色条进行显示的结果如下:

Matlab平台读取颜色条图片制作出自己的颜色条_第2张图片


 

 

你可能感兴趣的:(Matlab)