没有你的原始数据,这里贴一个简单的例子:
clc; clear; close all;
map = zeros(200, 511);
for col = 1:511
map(:,col) = col;
end
map = 1- mat2gray(map);
figure,imshow(map);
colormap(summer(511));
针对你的需求,实际上就是需要一张颜色表,其中每种颜色对应你数据中,每个点被重合的次数。
上面那段代码中,从第1列开始到第511列,每列的值的次数依次为1~511,然后调用系统自带的颜色表summer,生成511种颜色,并调用colormap加载该颜色表。
需要注意的是,通常颜色表中,值越大时颜色越亮,值越小时颜色越深,而你的需求正好相反。所以使用了“1-mat2gray()”的代码获得这个效果。
照此,你可以使用你的离散点建立一个矩阵a,矩阵中的每个元素为各点对应的重叠次数,然后:
1、使用mat2gray(a),将矩阵归一化;
2、构造一个对应的颜色表,为N行3列的形式,每种颜色对应一个次数值。当然你可以直接调用系统自带的,如summer(X),这里X的值可设为最大的重叠次数;
3、使用imshow(a)显示矩阵,然后调用colormap加载颜色表。
另外,如果你只想要summer中偏绿的颜色,而不需要偏黄的,可以建一个较大的颜色表,然后取其中的一半即可,代码如下:
clc; clear; close all;
map = zeros(200, 511);
for col = 1:511
map(:,col) = col;
end
map = 1- mat2gray(map);
figure,imshow(map);
clm = summer(1024);
clm = clm(1:511,:); %只需要一半
colormap(clm);
是啊,看的就是单位面积绿色色素点的多少