目录
前言
在我们的日常科研生活中,能够用一张让人眼前一亮的图给同行展示自己的成果是非常重要的。而且,往往越高端的期刊对作图的要求也越高。一张好看的配图首先就取决于它的配色。
本文以Matlab作图为例来展示如何自定义一幅图的配色--自制Colorbar教程
一、寻找一张好看的配色图
比如下面这张两张图:
这是我去年发在Geophysics期刊的一篇文章,左边图是我用Matlab直接画的,参数为默认,Colormap用的jet :
imagesc(x,y,data);colormap(jet)
右边的图是正式发表之后期刊的配色,感觉看上去高级了不少。那我下次能不能直接画成这样呢?这就需要去扒它的Colorbar,根据它的配色生成一个ColorMap,下次再用。
如果在平时看文章的时候看到一些好的配色图,也可以把它的Colorbar截下来,根据我下面的操作制作同款ColorMap。
二、保存待制作的Colorbar
将自己喜欢的Colorbar截图保存到本地(直接截图保存即可)。
三、利用代码读取并制作ColorMap
在Matlab中运行下面的代码,并将刚才截图保存的Colorbar的图片读入,即可生成自制的ColorMap
clc;
clear;
%根据一张颜色条的截图读取颜色值来制作自己的颜色条
%选择图片文件
[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));
%应用matlab自带颜色条画图测试
figure;
imagesc(correlation_matrix);
colorbar;
title('应用matlab自带颜色条进行显示','FontSize',16,'FontWeight','bold' );
%应用自制的颜色条进行显示
figure;
colormap(ColorMap_me)
imagesc(correlation_matrix);
colorbar;
title('应用自制的颜色条进行显示','FontSize',16,'FontWeight','bold' )
运行结果如下所示:
至此,根据别人文章里的Colorbar截图制作自己的Colorbar就成功了!
四、读入ColorMap画图
上一步的代码中会保存ColorMap_me.mat文件,下次使用时直接读入使用:
load('ColorMap_me.mat', 'ColorMap_me')
figure;
colormap(ColorMap_me)
imagesc(correlation_matrix)