目录
前言
在我们的日常科研生活中,能够用一张让人眼前一亮的图给同行展示自己的成果是非常重要的。而且,往往越高端的期刊对作图的要求也越高。一张好看的配图首先就取决于它的配色。
本文以Matlab作图为例来展示如何自定义一幅图的配色--自制Colorbar教程第二弹
上一篇中我们讲解了如何利用别人已有的Colormap自制同款,在本篇中,我们来讲解如何用RGB值自定义Colormap的范围,这样我们就可以随心所欲定制属于自己的Colormap啦!
一、查询RGB值
各种颜色的RGB对应值很容易查到,我们在这里以红白蓝为例:
红色:255、0、0;白色:255,225,255;蓝色:0,0,255
二、根据RGB生成Colormap
将RGB归一化,并运行如下代码生成Colormap:
mincolor = [1 0 0]; % red
mediancolor = [1 1 1]; % white
maxcolor = [0 0 1]; % blue
ColorMapSize = 50;
int1 = zeros(ColorMapSize,3);
int2 = zeros(ColorMapSize,3);
for k=1:3
int1(:,k) = linspace(mincolor(k), mediancolor(k), ColorMapSize);
int2(:,k) = linspace(mediancolor(k), maxcolor(k), ColorMapSize);
end
meep = [int1(1:end-1,:); int2];
其中红色代表的是最小值,蓝色代表是最大值,如果需要互换可以直接在代码中更改mincolor和maxcolor项。
关键参数:ColorMapSize,用于控制颜色过渡的平滑程度,数字越大则颜色过渡越平滑。
三、基于自制Colormap画图
生成一个随机相关矩阵并用自制的Colormap画图测试
%生成随机相关矩阵
correlation_matrix=corr(rand(10,10));
%画图
colormap(meep);
imagesc(correlation_matrix)
colorbar
画图如下:
测试ColorSize=5时的情况:
此时的颜色过渡比较生硬,包含较少的颜色块。
四、生成黄白黑Colormap测试
1、查询RGB
黄色:255、255、0;白色:55,225,255;黑色:0,0,0。
2、根据RGB生成Colormap
mincolor = [1 1 0]; % yellow
mediancolor = [1 1 1]; % white
maxcolor = [0 0 0]; % black
ColorMapSize = 50;
int1 = zeros(ColorMapSize,3);
int2 = zeros(ColorMapSize,3);
for k=1:3
int1(:,k) = linspace(mincolor(k), mediancolor(k), ColorMapSize);
int2(:,k) = linspace(mediancolor(k), maxcolor(k), ColorMapSize);
end
meep = [int1(1:end-1,:); int2];
3、画图测试
%生成随机相关矩阵
correlation_matrix=corr(rand(10,10));
%画图
colormap(meep);
imagesc(correlation_matrix)
colorbar
总结
本文中讲到的这种直接根据RGB值来制作Colormap的方法更加通用,可以根据自己的想法与需求设定属于自己的Colormap。