Matlab自制Colorbar(一)

目录

前言

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

二、保存待制作的Colorbar

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

四、读入ColorMap画图

前言

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

        本文以Matlab作图为例来展示如何自定义一幅图的配色--自制Colorbar教程


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

        比如下面这张两张图:

335fc9717cf446ae8ef0fea502f32ae1.png

        这是我去年发在Geophysics期刊的一篇文章,左边图是我用Matlab直接画的,参数为默认,Colormap用的jet :

imagesc(x,y,data);colormap(jet)

        右边的图是正式发表之后期刊的配色,感觉看上去高级了不少。那我下次能不能直接画成这样呢?这就需要去扒它的Colorbar,根据它的配色生成一个ColorMap,下次再用。

        如果在平时看文章的时候看到一些好的配色图,也可以把它的Colorbar截下来,根据我下面的操作制作同款ColorMap。 

二、保存待制作的Colorbar

将自己喜欢的Colorbar截图保存到本地(直接截图保存即可)。 

05fb7211264a4976a92fed13b7bdb413.png


 三、利用代码读取并制作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' )

运行结果如下所示: 

98b06c5f17a240308cea722b76052c02.png

至此,根据别人文章里的Colorbar截图制作自己的Colorbar就成功了! 

 

四、读入ColorMap画图

 上一步的代码中会保存ColorMap_me.mat文件,下次使用时直接读入使用:

load('ColorMap_me.mat', 'ColorMap_me')
figure;
colormap(ColorMap_me)
imagesc(correlation_matrix)

 

  • 12
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小薛薛snow

如果对您有帮助,请多多鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值