目录

前言

一、寻找一张好看的配色图

二、保存待制作的Colorbar

三、利用代码读取并制作ColorMap

四、读入ColorMap画图

前言

        在我们的日常科研生活中,能够用一张让人眼前一亮的图给同行展示自己的成果是非常重要的。而且,往往越高端的期刊对作图的要求也越高。一张好看的配图首先就取决于它的配色。

        本文以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)

 

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: