想让图中的数值以科学计数法的格式显示。
这个要分情况讨论,比如数字是在XY轴上,或者数字在标签里面。
1.在标签里面的情况:使用sprintf("%.1e", qvalue) ,1表示保留一位小数。
下面以几种基因型的GSEA富集分析结果,用ggplot2画的横向分面柱状图为例。
将几种基因型的GSEA富集分析结果汇总,melt形成长数据alldifterms,其中包含Description,NES ,qvalue, genotype几列。根据不同基因型NES的正负分成了几组(都上调,下调,某一组和另两组不同)形成pattern列。
p1 <- ggplot(
alldifterms,
aes(x = Description, y =NES ,fill=genotype)) +
geom_col() +
geom_text(aes(label=sprintf("%.1e", qvalue)),size=3,position = position_stack(vjust = 0.5))+coord_flip()+
theme_bw() +
facet_grid(pattern~.,scale = "free_y",space ='free_y' )+
labs(title = "GSEA analysis", y="NES", x="KEGG pathways",fill="Genotypes")+
geom_hline(mapping=NULL,data=NULL,yintercept=0,color="red",linetype="dotted")+
scale_fill_manual(
values =c(
K1KO="#E64B35FF",
K2KO="#4DBBD5FF",
DKO="#00A087FF"
)
)
p1