数据可视化——Matlab平台读取颜色条图片制作出自己的颜色条
概述:基于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。
截取好的颜色条
使用以下代码制作属于自己的颜色条,并将该颜色条用于数据可视化:
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) %应用自己制作的颜色条进行显示
imagesc(correlation_matrix);
colorbar;
title('基于自己制作的颜色条进行显示','FontSize',16,'FontWeight','bold' )
运行该代码,会填出读取图片文件的提示框,将刚刚保存的截取的颜色条图片1.png选中并确定,可完成运行并保存制作好的颜色条。
制作颜色条其实就是将读取的颜色条图片的中线对应RGB值取出作为颜色条ColorMap_me的RGB通道的值。
结果如下所示,同时将matlab默认的颜色条与自己制作的颜色条进行对比显示:
基于matlab默认的颜色条进行显示结果如下:
基于自己制作的颜色条进行显示的结果如下:
|
请发表评论