快速使用好看的图表颜色
程序员文章站
2022-05-10 14:52:25
...
常用数据可视化软件中部分配色方案的RGB值
Ref: https://zhuanlan.zhihu.com/p/23377067
技术路线
matlab中建立color_spec的函数。后续需要绘图时,直接调用该函数。另外,为方便查询,创建了实际颜色的示意图。
color_spec函数
思路非常简单,创建对应的元胞数组用于储存RGB的三元数组。值得一提的是,RGB的值域是0-255,但matlab一般使用归一化的值域即0-1。
输入变量:样式数字及颜色数字
输出变量:归一化的RGB三元数组
如果输入变量超出范围,则返回默认颜色变量default_color(白色)。
function ra=color_spec(StyleNum, ColorNum)
% 输入:样式数字及颜色数字
% 输出:RGB的归一化三元数组
% R ggplot2 set1
R_ggplot2_set1={[228,26,28],[55,126,184],[77,175,74],...
[152,78,163],[255,127,0],[255,255,51],[166,86,40],...
[247,129,191],[153,153,153]};
% R ggplot2 set2
R_ggplot2_set2={[102,194,165],[252,141,98],[141,160,203],...
[231,138,195],[166,216,84],[255,217,47],[229,196,148],[179,179,179]};
% R ggplot2 set3
R_ggplot2_set3={[255,108,145],[188,157,0],[0,187,87],[0,184,229],[205,121,255]};
% Tableau 10 medium
Tableau10={[96,157,202],[255,150,65],[56,194,93],...
[255,91,78],[184,135,195],[182,115,101],...
[254,144,194],[164,160,155],[210,204,90]};
% D3.js
D3js={[76,144,176],[85,168,104],[196,78,82],[129,144,178],...
[204,185,116],[100,181,205]};
% The Economist
TheEconomist={[8,189,255],[0,164,220],[0,81,108],[93,145,167],...
[240,89,62],[122,37,15],[0,137,130]};
% Business Week 1
BusinessWeek1={[0,174,247],[231,31,38],[0,166,82],...
[240,133,39],[227,13,132],[206,219,41]};
% Business Week 2
BusinessWeek2={[0,56,115],[247,0,0],[41,168,220],[231,31,38],[78,184,72]};
color_spec_array={R_ggplot2_set1,R_ggplot2_set2,R_ggplot2_set3,...
Tableau10,D3js,TheEconomist,BusinessWeek1,BusinessWeek2};
% 超出范围则返回默认(白色)
default_color=[1 1 1];
if StyleNum>8
ra=default_color;
elseif ColorNum>length(color_spec_array{StyleNum})
ra=default_color;
else
ra=color_spec_array{StyleNum}{ColorNum}/255;
end
end
样式数字及颜色数字示意图
使用方法:
1、先查右y轴确定颜色风格
2、再查左y轴确定StyleNum
3、最后查x轴确定ColorNum。
示意图生成代码的简要说明(技术路线)
1、使用横向的堆叠bar图,命令为barh(…,‘stacked’),以生成类似于表格的效果。
2、修改对应格子的颜色。首先用FaceColor**‘flat’属性才能改,然后设置CData以定位。注意b(i)为第i列,CData(j,:)为第j行。
3、图例修改。见本人的yyaxis的博文。
y=ones(8,9);
b=barh(y,'stacked');
for i=1:9
b(i).FaceColor = 'flat';
for j=1:8
StyleNum=j;
ColorNum=i;
b(i).CData(j,:)=color_spec(StyleNum, ColorNum);
end
end
title({'Function color\_spec Diagram','Usage: color\_spec(StyleNum,ColorNum)'});
xlabel('ColorNum');
ylabel('StyleNum');
xticks(0.5:1:8.5)
xlim([0,9])
xticklabels({'1','2','3',...
'4','5','6','7','8','9'});
grid on
yyaxis right
yticks(1:8)
ylabel([])
yticklabels({'R ggplot2 set1','R ggplot2 set2','R ggplot2 set3',...
'Tableau 10','D3.js','The Economist','Business Week set1','Business Week set2'})
set(gca,'Ycolor','k')
使用案例
x = linspace(1,10);
plot(x,exp(x/10),'color',color_spec(1,1));hold on
plot(x,sin(x),'color',color_spec(1,2));hold on
plot(x,cos(x),'color',color_spec(1,3));hold on
plot(x,sin(x)+2*cos(x),'color',color_spec(1,4));hold on
plot(x,2*sin(x)+cos(x),'color',color_spec(1,5));hold on
hold off
legend()
推荐阅读
-
羡慕别人网站小图标好看?推荐两个免费的图标网站 教你使用图标装饰自己的网站
-
用wordpress快速搭建一个好看的网站(2)
-
使用css3背景渐变中的透明度来设置不同颜色的背景渐变_html/css_WEB-ITnose
-
ASP.NET MVC中图表控件的使用方法
-
iOS9与XCode7中不能使用http连接的快速解决办法
-
Android使用selector修改TextView中字体颜色和背景色的方法
-
关于iOS GangSDK的使用 为App快速集成社群公会模块
-
iOS使用Target如何快速科学的区分开发环境详解
-
ASP.NET MVC中图表控件的使用方法
-
C#使用Gembox.SpreadSheet向Excel写入数据及图表的实例