MATLAB | MATLAB配色不够用,近2000款配色来啦

MATLAB绘图配色不够多?很多python\R语言绘图包都会带着好几套配色方案,比如很常见的ggsci绘图包就自带45套离散配色,于是本工具收集了常见55个绘图包中的离散配色,制作出了这个包含了1967套配色的离散配色包slanCL

基本使用

以下先说明代码咋用,最基础的用法就是:

  • slanCL(n)
  • 就是选择slanCL包的第n套配色:

    CList=slanCL(617)
    % CList =
    %     0.3059    0.4745    0.6549
    %     0.9490    0.5569    0.1686
    %     0.8824    0.3412    0.3490
    %     0.4627    0.7176    0.6980
    %     0.3490    0.6314    0.3098
    %     0.9294    0.7882    0.2824
    %     0.6902    0.4784    0.6314
    %     1.0000    0.6157    0.6549
    %     0.6118    0.4588    0.3725
    %     0.7294    0.6902    0.6745
    

    第二种用法有俩参数:

  • slanCL(n,Ind)
  • Ind可以是一个数值,也可以是一个向量:

    CList=slanCL(617,[1,3,5,7,9])
    % CList = 
    %     0.3059    0.4745    0.6549
    %     0.8824    0.3412    0.3490
    %     0.3490    0.6314    0.3098
    %     0.6902    0.4784    0.6314
    %     0.6118    0.4588    0.3725
    

    若是向量中的数值大于配色所含颜色数,依旧能取到颜色,不过颜色亮度变为前一轮颜色90%:

    CList=slanCL(617,1:80);
    

    可以看到数值越大颜色越暗:


    绘图示例

    示例1

    % 随机生成数据
    X=.3+rand(1,10);
    explode=0.*X;
    explode(7)=1.5;
    % 基础绘图
    pieHdl=pie(X,explode);
    % 修改配色
    for i=1:2:length(pieHdl)
        % 一次只取一个颜色
        pieHdl(i).FaceColor=slanCL(1924,(i+1)/2);
        pieHdl(i+1).FontName='Cambria';
        pieHdl(i+1).FontSize=12;
    end
    % 添加图例
    lgdHdl=legend();
    lgdHdl.Location='best';
    lgdHdl.NumColumns=2;
    lgdHdl.FontName='Cambria';
    lgdHdl.FontSize=11;
    

    示例2

    % 随机生成数据
    X=.3+rand(1,23);
    % 基础绘图
    ax=gca;hold on;axis tight
    bHdl=bar(X);
    bHdl.FaceColor='flat';
    bHdl.LineWidth=.8;
    % 修改配色
    CList=slanCL(786,1:23);
    for i=1:size(CList,1)
        bHdl.CData(i,:)=CList(i,:);
    end
    % 坐标区域修饰
    ax.DataAspectRatio=[12,1,1];
    ax.FontName='Times New Roman';
    ax.LineWidth=.9;
    ax.FontSize=13;
    ax.YGrid='on';
    ax.GridLineStyle='-.';
    ax.XTick=1:23;
    

    示例3

    % 随机生成数据
    X=1.5+rand(4,4);
    % 基础绘图
    ax=gca;hold on;
    bHdl=bar(X,'LineWidth',.8);
    % 修改配色
    CList=slanCL(1514,1:4);
    bHdl(1).FaceColor=CList(1,:);
    bHdl(2).FaceColor=CList(2,:);
    bHdl(3).FaceColor=CList(3,:);
    bHdl(4).FaceColor=CList(4,:);
    % 坐标区域修饰
    ax.FontName='Times New Roman';
    ax.LineWidth=.8;
    ax.FontSize=12;
    ax.YGrid='on';
    ax.GridLineStyle='-.';
    ax.XTick=1:23;
    

    示例4

    x=0:0.05:10;
    K=linspace(0,6,50);
    % 基础绘图
    ax=gca;hold on;
    for k=1:length(K)
        y=besselj(K(k),x);
        plot(x,y,'LineWidth',2,'Color',slanCL(531,k))
    end
    % 坐标区域修饰
    ax.FontName='Times New Roman';
    ax.LineWidth=.8;
    ax.XMinorTick='on';
    ax.YMinorTick='on';
    ax.FontSize=12;
    ax.XGrid='on';
    ax.YGrid='on';
    ax.GridLineStyle='-.';
    

    示例5

    X=rand(10);
    ax=gca;hold on
    CF=contourf(X);
    % 修改配色
    colormap(slanCL(1644))
    colorbar 
    % 坐标区域修饰
    ax.FontName='Times New Roman';
    ax.LineWidth=.8;
    ax.XMinorTick='on';
    ax.YMinorTick='on';
    ax.FontSize=12;
    ax.TickDir='out';
    

    其他示例

    以下展示我写的其他文章中的绘图使用本文中的配色:


    配色展示

    首先还是展示一下全部配色,让大家看看2000左右套配色有多壮观,之后介绍使用app designer写的辅助配色选择器。

    后面将提供辅助筛选器!!

    后面将提供辅助筛选器!!

    后面将提供辅助筛选器!!

    后面将提供辅助筛选器!!

    全部配色展示

    是不是有点壮观,这样选眼花了也选不出来配色,所以辅助筛选器来啦(showSlanCL.mlapp):

    配色筛选器

    选择来源库:

    类型选择:

    颜色数量选择:

    拖动滑动条:


    数据整理不易,希望大家该点赞的点赞,该在看的在看!!

    未经允许本代码请勿作商业用途,引用的话可以引用我file exchange上的链接,可使用如下格式:

    Zhaoxu Liu / slandarer (2023). 2000 palettes (https://www.mathworks.com/matlabcentral/fileexchange/126969-2000-palettes), MATLAB Central File Exchange. 检索来源 2023/3/28.

    若转载请保留以上file exchange链接及本文链接!!!!!

    该工具可通过上述fileexchange链接获取,或者通过以下gitee仓库下载:

    https://gitee.com/slandarer/slanColor/

    网盘链接:
    链接:
    https://pan.baidu.com/s/1oocjXDOQ_q1myB-1v29kgQ?pwd=slan
    提取码:slan

    物联沃分享整理
    物联沃-IOTWORD物联网 » MATLAB | MATLAB配色不够用,近2000款配色来啦

    发表评论