赞
踩
目录
在我们的日常科研生活中,能够用一张让人眼前一亮的图给同行展示自己的成果是非常重要的。而且,往往越高端的期刊对作图的要求也越高。一张好看的配图首先就取决于它的配色。
本文以Matlab作图为例来展示如何自定义一幅图的配色--自制Colorbar教程
比如下面这张两张图:
这是我去年发在Geophysics期刊的一篇文章,左边图是我用Matlab直接画的,参数为默认,Colormap用的jet :
imagesc(x,y,data);colormap(jet)
右边的图是正式发表之后期刊的配色,感觉看上去高级了不少。那我下次能不能直接画成这样呢?这就需要去扒它的Colorbar,根据它的配色生成一个ColorMap,下次再用。
如果在平时看文章的时候看到一些好的配色图,也可以把它的Colorbar截下来,根据我下面的操作制作同款ColorMap。
将自己喜欢的Colorbar截图保存到本地(直接截图保存即可)。
在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_me.mat文件,下次使用时直接读入使用:
- load('ColorMap_me.mat', 'ColorMap_me')
- figure;
- colormap(ColorMap_me)
- imagesc(correlation_matrix)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。