前文中,给大家提供了一个50种配色的函数,方便在画图的时候调用,感兴趣的可以参考文章:《Matlab科研绘图:50种配色分享,附完整代码》。本文,将重写配色函数,共计带来6套配色体系,而且后续可以自己随意修改。其中,第一套为上一篇文章中的50中配色,第二到第六套分别为:蓝色、绿色、红色、黄色、紫色,从浅色到深色。此外,提供了显示各色系每个颜色的函数。
配色函数
本次提供的配色函数具体代码如下:
function colors = iy_color(input, positions)
% IY_COLOR 生成自定义颜色映射.
%
% COLORS = IY_COLOR(INPUT) 生成基于指定输入参数的自定义颜色映射。
% INPUT 是一个整数,用于描述所需的颜色映射类型。
% 该函数返回生成的颜色映射作为一个颜色矩阵。
%
% INPUT 参数的说明:
% - 1: 综合颜色映射,包含多种颜色,从蓝色到深红色,再到灰色和深色。这个颜色映射提供了多样的颜色选择,可用于不同的应用。
% - 2: 蓝色色系,从浅到深,共计20个颜色。
% - 3: 绿色色系,从浅到深,共计20个颜色。
% - 4: 红色色系,从浅到深,共计20个颜色。
% - 5: 黄色色系,从浅到深,共计20个颜色。
% - 6: 紫色色系,从浅到深,共计20个颜色。
%
% COLORS = IY_COLOR(INPUT, POSITIONS) 可以使用 POSITIONS 参数来指定在生成的
% 颜色映射中选择哪些颜色。POSITIONS 应为整数或整数向量,表示所需颜色的位置。
%
% 示例:
% - colormap = iy_color(1); % 生成综合颜色映射。
% - colormap = iy_color(2, [1, 10, 15]); % 从浅蓝色到浅蓝色,选择指定位置的颜色。
%
% 请注意:在输入 INPUT 和 POSITIONS 时,请确保参数的有效性。
%
% 此外,如果想查看某个色系具体的颜色,您可以通过 color_all(INPUT),显示对应色系的颜色,它的输出是一张图片,给出了当前色系的所有颜色。
%
% 实例:
% - color_all(1) 输出综合颜色
%
% 作者:gugechor 冰沫记
% 日期:2023年11月2日
colormap1 = [ % 50种颜色
0 0 1;
0 0.5 0;
1 0 0;
0 0.75 0.75;
1 0 1;
1 0.5 0;
0.5 0 1;
0.5 0.5 0;
0 1 1;
0 1 0;
0.75 0.75 0;
0 0 0;
0.5 0.5 0.5;
0.6 0.2 0.2;
0.2 0.6 0.2;
0.2 0.2 0.6;
0.8 0.8 0;
0.8 0 0.8;
0 0.8 0.8;
0.5 0.5 0.2;
0.5 0.2 0.5;
0.2 0.5 0.5;
0.9 0.6 0.2;
0.9 0.2 0.6;
0.2 0.9 0.6;
0.7 0.7 0.7;
0.8 0.4 0.1;
0.4 0.8 0.1;
0.4 0.1 0.8;
0.1 0.4 0.8;
0.8 0.1 0.4;
0.1 0.8 0.4;
0.2 0.7 0.2;
0.7 0.2 0.2;
0.2 0.2 0.7;
0.4 0.5 0.8;
0.8 0.4 0.5;
0.5 0.8 0.4;
0.7 0.4 0.4;
0.4 0.4 0.7;
0.4 0.7 0.4;
0.8 0.6 0.2;
0.8 0.2 0.6;
0.2 0.8 0.6;
0.6 0.2 0.8;
0.2 0.6 0.8;
0.6 0.8 0.2;
0.4 0.1 0.2;
0.1 0.4 0.2;
0.2 0.4 0.1;
];
colormap2 = [ % 蓝色色系,由浅到深色,共计20个
0.9 0.9 1;
0.85 0.85 1;
0.8 0.8 1;
0.75 0.75 1;
0.7 0.7 1;
0.65 0.65 1;
0.6 0.6 1;
0.55 0.55 1;
0.5 0.5 1;
0.45 0.45 1;
0.4 0.4 1;
0.35 0.35 1;
0.3 0.3 1;
0.25 0.25 1;
0.2 0.2 1;
0.15 0.15 1;
0.1 0.1 1;
0.05 0.05 1;
0 0 1;
0 0 0.9;
];
colormap3 = [ % 绿色色系,由浅到深色,共计20个
0.85 1 0.85;
0.8 1 0.8;
0.75 1 0.75;
0.7 1 0.7;
0.65 1 0.65;
0.6 1 0.6;
0.55 1 0.55;
0.5 1 0.5;
0.45 1 0.45;
0.4 1 0.4;
0.35 1 0.35;
0.3 1 0.3;
0.25 1 0.25;
0.2 1 0.2;
0.15 1 0.15;
0.1 1 0.1;
0.05 1 0.05;
0 1 0;
0 0.95 0;
0 0.9 0;
];
colormap4 = [ % 红色色系,由浅到深色,共计20个
1 0.85 0.85;
1 0.8 0.8;
1 0.75 0.75;
1 0.7 0.7;
1 0.65 0.65;
1 0.6 0.6;
1 0.55 0.55;
1 0.5 0.5;
1 0.45 0.45;
1 0.4 0.4;
1 0.35 0.35;
1 0.3 0.3;
1 0.25 0.25;
1 0.2 0.2;
1 0.15 0.15;
1 0.1 0.1;
1 0.05 0.05;
1 0 0;
0.95 0 0;
0.9 0 0;
];
colormap5 = [ % 黄色色系,由浅到深色,共计20个
1 1 0.85;
1 1 0.8;
1 1 0.75;
1 1 0.7;
1 1 0.65;
1 1 0.6;
1 1 0.55;
1 1 0.5;
1 1 0.45;
1 1 0.4;
1 1 0.35;
1 1 0.3;
1 1 0.25;
1 1 0.2;
1 1 0.15;
1 1 0.1;
1 1 0.05;
1 1 0;
0.95 0.95 0;
0.9 0.9 0;
];
colormap6 = [ % 紫色色系,由浅到深色,共计15个
0.9 0.85 1;
0.85 0.75 1;
0.8 0.65 1;
0.75 0.55 1;
0.7 0.45 1;
0.65 0.35 1;
0.6 0.25 1;
0.55 0.15 1;
0.5 0.05 1;
0.45 0 0.9;
0.4 0 0.8;
0.35 0 0.7;
0.3 0 0.6;
0.25 0 0.5;
0.2 0 0.4;
];
% 为每个 colormap 定义一个 cell 数组
colormaps = {colormap1, colormap2, colormap3, colormap4, colormap5, colormap6};
% 选择 colormap
if isscalar(input) && input >= 1 && input <= numel(colormaps)
selected_colormap = colormaps{input};
else
error('请输入有效的 colormap 索引。');
end
% 获取指定位置的颜色
num_colors = size(selected_colormap, 1);
if nargin < 2
positions = 1:num_colors;
end
if isvector(positions) && all(positions >= 1 & positions <= num_colors)
colors = selected_colormap(positions, :);
else
error('位置必须是介于 1 到 %d 之间的整数或整数矩阵。', num_colors);
end
end
配色函数使用说明
iy_color 生成自定义颜色映射.
COLORS = iy_color(INPUT) 生成基于指定输入参数的自定义颜色映射。
INPUT 是一个整数,用于描述所需的颜色映射类型。
该函数返回生成的颜色映射作为一个颜色矩阵。
INPUT 参数的说明:
– 1: 综合颜色映射,包含多种颜色,从蓝色到深红色,再到灰色和深色。这个颜色映射提供了多样的颜色选择,可用于不同的应用。
– 2: 蓝色色系,从浅到深,共计20个颜色。
– 3: 绿色色系,从浅到深,共计20个颜色。
– 4: 红色色系,从浅到深,共计20个颜色。
– 5: 黄色色系,从浅到深,共计20个颜色。
– 6: 紫色色系,从浅到深,共计20个颜色。
COLORS = iy_color(INPUT, POSITIONS) 可以使用 POSITIONS 参数来指定在生成的
颜色映射中选择哪些颜色。POSITIONS 应为整数或整数向量,表示所需颜色的位置。
示例:
– colormap = iy_color(1); % 生成综合颜色映射。
– colormap = iy_color(2, [1, 10, 15]); % 从浅蓝色到浅蓝色,选择指定位置的颜色。
请注意:在输入 INPUT 和 POSITIONS 时,请确保参数的有效性。
此外,如果想查看某个色系具体的颜色,您可以通过 color_all(INPUT),显示对应色系的颜色,它的输出是一张图片,给出了当前色系的所有颜色。
实例:
– color_all(1) 输出综合颜色
作者:gugechor 冰沫记
日期:2023年11月2日
可以通过help iy_color或者doc iy_color查看帮助文件。
颜色色系查看函数
本文还提供如下函数,以用于查看各色系具体的颜色值,它的输出是对应色系的所有颜色,以图片方式显示每个编号对应的颜色。
function color_all(colorIndex)
% 根据用户传递的colorIndex参数设置colormap
colormap = iy_color(colorIndex);
% 获取 colormap 的列数
num_columns = size(colormap, 1);
% 创建颜色代码
colorCodes = 1:num_columns;
% 定义参数
colorBlockSize = 40; % 每个颜色块的大小
colorsPerRow = 10; % 每行包含的颜色数
colorSpacing = 20; % 颜色之间的间隔
groupSpacing = 30; % 每组颜色之间的间隔
% 计算图像大小
imageWidth = (colorsPerRow * colorBlockSize) + ((colorsPerRow - 1) * colorSpacing);
imageHeight = (ceil(numel(colorCodes) / colorsPerRow) * colorBlockSize) + ...
(ceil(numel(colorCodes) / colorsPerRow - 1) * groupSpacing);
% 创建颜色列表图
figure;
set(gcf, 'Position', [100, 100, imageWidth, imageHeight]);
hold on;
for i = 1:numel(colorCodes)
% 计算当前颜色块的位置
row = ceil(i / colorsPerRow);
col = mod(i - 1, colorsPerRow) + 1;
% 计算颜色块左下角的坐标
x = (col - 1) * (colorBlockSize + colorSpacing);
y = (row - 1) * (colorBlockSize + groupSpacing);
% 获取当前颜色
color = colormap(i,:);
% 绘制颜色块
rectangle('Position', [x, y, colorBlockSize, colorBlockSize], 'FaceColor', color);
% 显示颜色代码
text(x + colorBlockSize / 2, y - 10, num2str(colorCodes(i)), 'HorizontalAlignment', 'center');
end
axis off;
hold off;
end
使用方法:color_all(1)输出1号色系所有颜色,以此类推。具体输出结果如下
颜色色系展示
原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/16157.html