Matlab科研绘图:50种配色分享,附完整代码

4.7
(3)

颜色在科研绘图中具有重要作用,不仅可以使图表更具吸引力,还可以增强数据可读性。在Matlab中,我们可以自定义颜色映射,以满足特定的科研需求。在本文中,我们将分享50种自定义颜色的配色方案,并附上完整代码。我们还将探讨如何在绘制不同类型的图表时使用这些自定义颜色,包括折线图、柱状图、饼图、colormap 等。让我们一起深入了解如何优雅地绘制科研图表。

Matlab科研绘图:50种配色分享,附完整代码

完整代码

首先,让我们看一下如何创建这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;
Matlab科研绘图:50种配色分享,附完整代码

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;
Matlab科研绘图:50种配色分享,附完整代码

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('自定义颜色饼图');
Matlab科研绘图:50种配色分享,附完整代码

颜色汇总

最后,给出这50个颜色的汇总,数值与颜色一一对照表如下图所示。

Matlab科研绘图:50种配色分享,附完整代码

共计3人评分,平均4.7

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/16066.html

(0)
微信公众号
古哥的头像古哥管理团队
上一篇 2023年10月31日 11:11
下一篇 2023年10月31日 21:28

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号