ggsci-让你的论文配图一步到位的满足期刊要求
2019-05-27 本文已影响70人
生信杂谈
事情是这样:我帮一位医生做生信分析,一段时间之后他和我说,让我把图重新画一下,可以直接用于投稿的。并且他指出自己没有什么审美能力,让我自由发挥==
我心想审美这个东西因人而异,这自由发挥我也得有个方向,当然一篇文章里的图肯定要统一色调,若是靠自己手动调就太麻烦了,然后听说有专门用于配色的包我就想试一试。
ggsci打包了多个sci杂志的配色,包括Lancet,Nature,Science等。可以直接通过CRAN安装:
install.packages("ggsci")
先看一下官网给出的效果图:
嗯。。。的确是比默认调色协调多了
ggsci中的调色盘可以通过scales包中show_col函数查看:
library(scales)
pal <- pal_npg("nrc", alpha=0.7)(9) #nrc是Palette Types,alpha用于调节透明度
show_col(pal)
pal
[1] "#E64B35B2" "#4DBBD5B2" "#00A087B2" "#3C5488B2" "#F39B7FB2" "#8491B4B2" "#91D1C2B2" "#DC0000B2" "#7E6148B2"
针对离散数据,ggsci中有两个函数用来控制配色scale_color_palname()和scale_fill_palname(),palname用于指定不同的调色盘。
没有使用ggsci前:
test<-read.table("test.txt",sep="\t",header=T,stringsAsFactors = F) #读入数据
library(ggplot2)
p1<- ggplot(test)+
geom_bar(stat="identity",position="dodge",
aes(test$TranscriptID,test$Value,fill=Group))+
labs(y="Values",x="TranscriptID")
使用ggsci之后:
library(ggsci)
p1+scale_fill_npg()+theme_bw()+ #选择Nature调色盘
coord_cartesian(ylim=c(0,1))+ #设置y轴范围
theme(axis.text.x = element_text(size=rel(1.0),angle = 45,hjust = 1,color ="black"), #字体倾斜
panel.grid =element_blank())
在ggsci中不同主题拥有的颜色数量是固定的,所以如果变量个数太多,有一些主题可能并不适用(Nature主题只有9个颜色),需要选择其他主题。
未使用ggsci:
library(ggplot2)
library(reshape2)
norm_data<-read.csv("normfinder/normfinder_ref barplot.csv",sep=",",header=T,stringsAsFactors = F) #输入数据
mydata<-melt(norm_data,id.vars="TranscriptID",variable.name="Group",value.name="Value")
p2<-ggplot(mydata,aes(TranscriptID,value,fill=group))+
geom_bar(stat="identity",position="dodge")+
ggtitle("Stability and variation value")
library(Cairo)
CairoPDF(file="normfinder/normfinder_ref barplot.pdf",width = 9.26, height = 4.13)#用cairo可以进行字体设置
p2+ scale_fill_d3(palette = c("category20c"))+theme_bw()+ #选择D3调色盘
theme(axis.text.x = element_text(size=rel(1.0),angle = 45,hjust = 1,color ="black"),
panel.grid =element_blank(),#删除网格线
plot.title = element_text(hjust = 0.5))#使标题居中
dev.off()
D3调色盘的Palette Types有4种,其中category10提供10种颜色,category20和category20b,category20c提供20种配色。
此外ggsci还有针对连续型数据的调色盘,用函数scale_fill_gsea()和scale_fill_material控制配色,应用于相关性分析或热图。
实例:
library("reshape2")
data("mtcars") #使用R自带的数据
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())
p3_gsea <- p3 + scale_fill_gsea()
使用scale_fill_material()可以选择不同的颜色
p3 + scale_fill_material("red")
更多关于ggsci的具体参数设置,可以参考ggsci官网:
https://nanx.me/ggsci/articles/ggsci.html#discrete-color-palettes
更多原创精彩视频敬请关注生信杂谈: