代码编织梦想

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/slandarer/article/details/129828666

MATLAB周边第四期-MATLAB优雅绘图配色-爱代码爱编程

1 写在前面 该系列为MATLAB周边应用,同时包含了一些相关技巧,欢迎私信一起交流问题,更多的好玩周边可查看往期的推文。有问题或者需要其他建议的话,非常欢迎后台私信交流,共同进步,如若出现违反学术道德的情况与本博客以及作者无关,所有资料仅做参考。 2 Matlab的配色方案(cbrewer) 2.1 Matlab自带的颜色、线性、标记 打开mat

matlab 绘图颜色—论文配色方案_zmlg的博客-爱代码爱编程

(36条消息) 论文配色方案(自用)_minopus的博客-CSDN博客https://blog.csdn.net/sinat_41299610/article/details/106912048?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2

matlab 增加配色方案-爱代码爱编程

(1) Matlab 提取已有的论文配色 参考此链接(https://www.its304.com/article/SDAU_LY124/105635548) 可以将论文里或者其他网站和软件上好看的颜色带复现出来,注意需要