R语言实现SCI级别颜色搭配
大家投过文章的想必都有为绘图的色彩纠结的不得了的时候,今天就给大家介绍一个别人基于一些科研杂志,可视化库甚至科幻电影进行了一些颜色模板的设计的R包ggsci。安装我们就不多说了:
install.packages("ggsci")
install.packages("ggplot2")
install.packages("gridExtra")
install.packages("gridExtra")
我们首先看下此包都预设了哪些相关的模板,具体内容如下表:
接下来我们就直接利用包自带的实例给大家演示下。首先,我们看下在不做处理的情况下:
library("ggsci")
library("ggplot2")
library("gridExtra")
data("diamonds")
p1 = ggplot(subset(diamonds, carat >=2.2), aes(x = table, y = price, colour = cut)) +
geom_point(alpha = 0.7) +geom_smooth(method = "loess", alpha =0.05, size = 1, span = 1) + theme_bw()
p2 = ggplot(subset(diamonds, carat > 2.2& depth > 55 & depth < 70), aes(x = depth, fill = cut)) +geom_histogram(colour= "black", binwidth = 1, position = "dodge") +theme_bw()
grid.arrange(p1, p2, ncol = 2)
接下来我们看下包中的模板怎么加进去。以NPG为例,我们直接看实例:
p1_npg = p1 + scale_color_npg()
p2_npg = p2 + scale_fill_npg()
grid.arrange(p1_npg, p2_npg, ncol = 2)
我们再看一个在科幻电影《Tron Legacy》中的风格:
p1_tron = p1 + theme_dark() + theme(panel.background= element_rect(fill = "#2D2D2D"),
legend.key = element_rect(fill = "#2D2D2D")) +scale_color_tron()
p2_tron = p2 + theme_dark() + theme(panel.background= element_rect(fill = "#2D2D2D")) +scale_fill_tron()
grid.arrange(p1_tron, p2_tron, ncol = 2)
最后我们看下此包对于连续性的颜色变化的设置,其实所谓连续性的颜色变化主要应用于热图中可以实现颜色的过度。那么,我们直接看下实例,首先是一个原始的数据设置:
library("reshape2")
data("mtcars")
cor = cor(unname(cbind(mtcars, mtcars,mtcars, mtcars)))
cor_melt = melt(cor)
p3 = ggplot(cor_melt, aes(x = Var1, y =Var2, fill = value)) +geom_tile(colour = "black", size = 0.3) +theme_bw()+theme(axis.title.x = element_blank(),axis.title.y = element_blank())
然后,我们看下GSEA GenePattern的样式情况:
p3_gsea = p3 + scale_fill_gsea()
p3_gsea_inv = p3 + scale_fill_gsea(reverse= TRUE)#可以实现颜色的颠倒
grid.arrange(p3_gsea, p3_gsea_inv, ncol =2)
当然我们也可以使用Material Design模板中19种颜色的过度,我们随便取其一种看下实例:
p3+ scale_fill_material("blue")
或许我们看中了他其中的某一个或者几个颜色,那么我们也可以把这个颜色提取出来应用于其它的绘图系统,具体提取过程如下:
mypal = pal_npg("nrc", alpha =0.7)(9)##提取颜色
library("scales")
show_col(mypal)##对应颜色代码
欢迎大家互相学习交流!