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