颜色在科研绘图中具有重要作用,不仅可以使图表更具吸引力,还可以增强数据可读性。在Matlab中,我们可以自定义颜色映射,以满足特定的科研需求。在本文中,我们将分享50种自定义颜色的配色方案,并附上完整代码。我们还将探讨如何在绘制不同类型的图表时使用这些自定义颜色,包括折线图、柱状图、饼图、colormap 等。让我们一起深入了解如何优雅地绘制科研图表。
完整代码
首先,让我们看一下如何创建这50种自定义颜色的颜色映射。在这段完整的Matlab代码中,我们定义了一个名为diycolor
的函数,该函数接受整数输入,返回相应的自定义颜色。
function color = iy_color(input)
% 颜色映射,这里定义了一些预定义的颜色
colormap = [
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; % 深黄
];
% 计算颜色的个数
num_colors = size(colormap, 1);
if isscalar(input) && input >= 0 && input < num_colors
% 如果输入是单个整数并且在允许的范围内
index = input + 1;
color = colormap(index, :);
elseif isvector(input) && all(input >= 0 & input < num_colors)
% 如果输入是整数矩阵并且所有值都在允许的范围内
color = zeros(3, numel(input));
for i = 1:numel(input)
index = input(i) + 1;
color(:, i) = colormap(index, :)';
end
else
error('输入必须是介于 0 到 %d 之间的整数或整数矩阵。', num_colors - 1);
end
end
这段代码中,您可以按照您的需求定义自己的颜色,然后使用diycolor
函数获取它们。
基本使用
在绘制科研图表之前,我们需要了解如何基本使用这些自定义颜色。这里有一些示例,说明如何获取和使用颜色。
获取单个颜色
color = iy_color(2); % 获取第三种颜色
结果如下:
color =
1 0 0
获取多个颜色
colors = iy_color([1, 5, 9, 13, 17]); % 获取多种颜色
结果如下:
colors =
0 1.0000 0 0.6000 0.8000
0.5000 0.5000 1.0000 0.2000 0
0 0 0 0.2000 0.8000
绘图实例
1. 折线图
在这个示例中,我们将使用自定义颜色绘制带有图例、坐标轴标签和标题的折线图。我们使用5种不同的自定义颜色来突出显示每条曲线。
% 创建示例数据
x = 1:10;
y = rand(10, 5);
% 绘制带有自定义颜色的折线图
colors = iy_color([1, 5, 9, 13, 17]); % 获取多种颜色
figure;
hold on;
for i = 1:5
plot(x, y(:,i), 'Color', colors(:,i), 'LineWidth', 2);
end
xlabel('X轴');
ylabel('Y轴');
title('自定义颜色折线图');
legend('线条1', '线条2', '线条3', '线条4', '线条5');
hold off;
2. 柱状图
在这个示例中,我们获取了23个颜色值,并对23个数做柱状图。
% 随机生成数据
X = 0.3 + rand(1, 23);
% 基础绘图
ax = gca;
hold on;
axis tight;
bHdl = bar(X);
bHdl.FaceColor = 'flat';
bHdl.LineWidth = 0.8;
% 使用 iy_color 函数生成自定义颜色
custom_colors = iy_color(1:23);
for i = 1:23
bHdl.CData(i, :) = custom_colors(:, i);
end
% 坐标区域修饰
ax.DataAspectRatio = [12, 1, 1];
ax.FontName = 'Times New Roman';
ax.LineWidth = 0.9;
ax.FontSize = 13;
ax.YGrid = 'on';
ax.GridLineStyle = '-.';
ax.XTick = 1:23;
3. 饼图
在这个示例中,我们实用1 3 6 12 30这五个颜色设定了一个饼图的颜色。
% 随机生成数据
X = 0.3 + rand(1, 5);
explode = [0.1 0 0 0 0];
% 创建示例数据
categories = {'类别1', '类别2', '类别3', '类别4', '类别5'};
% 绘制带有自定义颜色的饼图
colors = iy_color([1, 3, 6, 12, 30]);
figure;
pie(X, explode, categories);
title('自定义颜色饼图');
颜色汇总
最后,给出这50个颜色的汇总,数值与颜色一一对照表如下图所示。
原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/16066.html