如何一秒获取Science、Nature等高分期刊配色?
卖萌控的博客
点击这里进入电脑版页面!体验更好
如何一秒获取Science、Nature等高分期刊配色?
2022-6-30 萌小白


相信各位在肝图表写论文时,一定都会思考:这张图表用啥颜色?论文整体配色搭配怎么把控才好看?



毕竟高分期刊大牛文章的共通点,除了论文精彩,整体配色也十分具有吸引力。



许多在线配色/提取颜色的工具效果不错,通过下载大牛文章使用PS、AI等直接“偷色”也不是难事。如今即便自己缺少美学灵感,但仍可以做到轻松获取出彩的配色方案。有兴趣可参考往期推文:
《作图颜色调得好,高分文章跑不了!》 、 《如何“偷走”大牛文章漂亮的配色?》



但上述方法可能不适用所有情景(特别是R绘图时)。只需要少量颜色的情况还好,直接通过十六进制颜色码自定义配色即可,做到好看十分简单。



但当绘制一些如堆叠图、桑基图等的多分组图表时,当你需要自定义十几种甚至更多颜色时(如下图),在找配色上就会花费非常多的时间,根据数据的不同,有些需要渐变配色(容易一点),有些则需要离散配色(这个最难),不太适合懒人。






( ISME ,2021)



因此,今天给大家介绍四个能轻松获取高分科学期刊同款配色方案的R包,并讲述如何基于这四个配色包,生成任意所需数量的超好看配色。当然,也能提取出配色方案,“反向”运用于Origin、AI、Excel等其它软件图形的绘制。



# 1. ggsci #



此包是基于ggplot2的颜色主题包,内置的配色方案都为各类科学期刊、科幻电影常用配色。由于篇幅受限,这里仅展示部分常用科学期刊配色,剩余大家自行查看帮助文档。



#相关包的安装和载入



install.packages('ggsci')



library(ggsci)



library(ggplot2)



#查看此包帮助文档(共提供18种配色方案,点击名称即可跳转到对应配色说明及案例)



vignette( "ggsci")



#提取配色的通用函数(palname替换为配色方案名称即可,详见帮助文档)



#scale_color_palname



#scale_fill_palname



#使用R内置数据集创建箱线图作为本次范例:



data(singer,package= "lattice")



p<-ggplot(singer,aes(x=voice.part,y=height,fill=voice.part,color=voice.part,alpha=0.8))+geom_boxplot



p<-p+theme_bw+coord_fixed(ratio=0.25)



#使用Nature配色(NPG)



p2<-p+scale_color_npg+scale_fill_npg



p2






#使用Science配色(AAAS)



p3<-p+scale_color_aaas+scale_fill_aaas



p3






#使用柳叶刀配色(Lancet)



p5<-p+scale_color_lancet+scale_fill_lancet



p5






#使用Journal of Clinical Oncology配色(JCO)



p6<-p+scale_color_jco+scale_fill_jco



p6






那么如何将心仪的颜色提取出来呢?不同的配色方案本质就是不同十六进制颜色码向量的集合。但ggsci包有些特殊,颜色向量集的名称并不和帮助文档中所给的对应配色方案名称对应,因此需要多一步自行查找。



#查看选中配色方案的帮助文档 (以Nature的配色NPG为例)



library( "scales")



? scale_color_npg



查看NPG的帮助文档可发现,此配色方案包含共10种颜色,颜色向量集名称为“nrc”,可以调整透明度。






#可选择提取≤10种颜色,但可通过调节透明度产出不同明度的配色方案



mycolor<-pal_npg( "nrc", alpha = 0.5)(8) #提取8种颜色,透明度80%



mycolor



show_col(mycolor)






ggsci包中其余配色方案也可通过此方法来获取十六进制颜色码,大家可根据需要直接复制颜色码或者保存配色图片。



# 2. RColorBrewer #



这个包的使用频率也非常高,上一周推文 《如何绘制Science文章的“花式”河流图?》 中就使用它进行配色。



#RColorBrewer包的安装和载入



install.packages('RColorBrewer')



library(RColorBrewer)



#查看帮助文档



? RColorBrewer



#查看全部配色方案



display.brewer. all



#作者将上述配色方案分为了三类(从上至下):连续型(sequential)、离散型(Qualitative)、极端型(Diverging),可适用于不同类型的分类变量(非常方便!),以下代码可分别进行查看



display.brewer. all(type= "seq")



display.brewer. all(type= "qual")



display.brewer. all(type= "div")



#使用Spectral配色方案



mycolor2<-brewer.pal(11, "Spectral")#可选择的颜色数量区间在此配色最大数和绘图所需数之间



p7<-p+scale_fill_manual(values=rev(mycolor2))+



scale_color_manual(values=rev(mycolor2))



p7






#使用YlOrRd配色方案



mycolor3<-brewer.pal(9, "YlOrRd")



p8<-p+scale_fill_manual(values=rev(mycolor3))+



scale_color_manual(values=rev(mycolor3))



p8






RColorBrewer包可直接提取配色,颜色集合的名称和配色方案名称相同。



#提取所需配色的十六进制颜色



brewer.pal(9, "YlOrRd")



show_col(mycolor3)






两个包的基础用法就介绍到这。此外,文首提到的常见情况——分类变量非常多的情况怎么办?上述R包里每种方案所包含的颜色数量似乎也就10来种,似乎不够用?



#方法一:



使用colorRampPalette扩展上述R包颜色



#这个函数的基本用法:基于指定的颜色向量,生成指定数量的渐变颜色



col3<-colorRampPalette(c('blue','white','red'))(30)



show_col(col3)



#使用colorRampPalette扩展R包配色方案中的颜色



col4<-colorRampPalette(brewer.pal(8,'Set2'))(56)#将RColorBrewer包中的Set2方案8个颜色扩展为56个



col5<-colorRampPalette((pal_npg( "nrc")(9)))(56)#将ggsci包中的NPG方案9个颜色扩展为56个



show_col(col4)



show_col(col5)









当然,你也可以通过从配色包中提取出心仪的十六进制颜色码,去任意指定自己所需颜色,这里不再展示。



#方法二:



使用paletteer包



朋友们,如果上述方法还不能满足你的要求,那就用用看paletteer!这个包中共收录了52个R包中的2,100种配色方案,都可直接调用,出现“配色荒”算我输!



#paletteer包的安装、调用、查看帮助文档



install.packages( "paletteer")



library(paletteer)



? paletteer



Paletteer包中针对不同数据类型(连续型、离散型),存在两种调用函数,详见下文:



1.连续型配色方案:和colorRampPalette函数类似,可以基于选定的配色主题扩展出任意所需数量颜色。



#生成连续型配色方案(基于选定的配色主题拓展出所需任意数量的颜色):



c_palettes<- palettes_c_names#查看所有配色



我们可以看到,连续型配色方案中共有330种方案,每个方案都可以生成指定数量颜色~






#引号处配色名称可直接Tab键浏览选取,也可以直接输入,格式为:R包名称::配色方案名称



paletteer_c( "gameofthrones::targaryen", n = 40)



paletteer_c( "gameofthrones::arya", n = 15)



paletteer_c( "pals::ocean.matter", n = 25)



我们任意盲挑几种搭配,生成不同数量的颜色,如下图,十六进制颜色码都叠加在对应颜色上,我们在挑配色时就太方便啦(当然也可以生成色卡直接导出,见前文,这里不赘述)!






2.离散型配色方案:虽然每种配色方案依然有最大颜色数限制,但架不住收纳的配色主题多啊(共有2,037种配色方案)!从几种,到十几种、二三十种、上百种颜色的配色方案都完美囊括。



#生成离散型配色方案:



d_palettes<- palettes_d_names#查看所有配色 ,共计2037种配色方案






paletteer_d( "ggthemes::Classic_20",n=20) #随机选一个查看



#将随机选取的Classic_20配色方案运用于箱线图示例:



mycol<-paletteer_d( "ggthemes::Classic_20",n=20)



p9<-p+scale_fill_manual(values=rev(mycol))+



scale_color_manual(values=rev(mycol))



p9






真的随便乱挑出来的配色都好好看!



#方法三:



使用colorpicker包



paletteer还不满足,看来是时候展现真正的技术,自己手动丰衣足食了!



R语言的难点之一就是啥都要敲代码,搞得上个色都那么艰难。但是,colorpicker为我们提供了一个交互式颜色获取面板,让你能够体验“非R”的轻松愉快(简单来说,你可以不用敲代码直接点点点快速获取颜色)。



#colorpicker包的安装、调用



install.packages( "colourpicker")



library(colourpicker)



col_colourpicker<-#先设置需要赋值的颜色名,鼠标选择在Addins处选择colourpicker






然后会出来一个交互式面板(像是在用别的软件了呢),如下:



在Any colour面板,你可以点击“+”任意添加所需颜色数量,在“Select any colour”处任意挑选颜色,或者直接输入十六进制颜色码,如下图。






在Find R colour面板,你可以任意选择一个颜色,并生成一组40个颜色以内的相近色搭配色板,根据需要点击颜色将其添加到“Selected colours”处。






最后,在All R colour面板提供了好看的配色库可自行挑选添加,在完成颜色选择后,我们点击右上角的Done即可输出十六进制颜色码或者颜色名称。






col_map<-c( "#E07979", "#801212", "#EDB4B4", "#4169E1", "#6CA6CD", "#48D1CC", "#FFC0CB", "#96CDCD")



对于想自行控制配色的人来说,简直太方便啦!



上述方法都能够快速生成任意所需数量的科学期刊配色方案!根据自己的需求选择适合自己的方法吧!今天的分享就到这里~



PS



如果各位有更好用的包或者方法欢迎评论区分享!






参考文献






Bowerman,
K.L., Knowles, S.C.L., Bradley, J.E. et al. Effects of laboratory
domestication on the rodent gut microbiome. ISME COMMUN. 1, 49 (2021).



发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容