上个月在表观学习小组的讨论上,说起过文章里面的区域放大效果图怎么做的,当时还没有了解到真的有R包能完成,大多数人认为可能是PS做的,最近偶然看到一个推送,原来那种图是由ggplot2
的扩展包完成的。那就马上来学习一下吧。
学习链接:
https://mp.weixin.qq.com/s/BxPDHi57EUWmYZ6_5UZ4NA
该文章介绍了一个包ggforce
,是在ggplot2
基础上,将分面显示函数进行了包装,根据数据的选择进行放大或者根据坐标范围进行放大。
刚好最近做的双荧光素酶报告基因实验有了初步结果下面尝试下:
rm(list = ls())
options(stringsAsFactors = F)
library(tidyverse)
library(ggforce)
dat=read.table("data_raw",header = T)
head(dat)
p <- ggplot(dat,aes(wt,mut,colour = gene)) + geom_boxplot() +
facet_zoom(ylim = c(0, 2.5)) + cowplot::theme_cowplot()
p
forlabel <- dat %>% filter(wt<80 & mut<1.9)
lp <- p+ geom_boxplot(size = 3,shape =1,data = forlabel)+
ggrepel::geom_label_repel(aes(label = gene),
data = forlabel)
lp
library(export)
export::graph2ppt(lp)
facet_zoom()
函数完成了从纵坐标截取一段放大展示。这个图导出到ppt后可以解组合,然后再进行细节调整。自己画的标注那么丑,想结合Y叔叔前几天分享的交互注释你的ggplot,再来排个版(主要是自己不会写函数)由于网络原因直接从GitHub安装包比较难,想办法下载到本地安装,这是个shiny插件,用
ggannotate::ggannotate(p)
出图,然后可以用鼠标调整细节:
library(devtools)
#install_local("./ggannotate-master/",upgrade = F)
ggannotate::ggannotate(p)
geom_text(data = data.frame(label = "NONO"),
mapping = aes(label = label),
size = 3.86605783866058,
angle = 0L,
lineheight = 2L,
hjust = 0.5,
vjust = 0.5,
colour = "black",
family = "sans",
fontface = "bold",
inherit.aes = FALSE,
show.legend = FALSE)
ggsave("luc20200413.png")
失败的尝试,并没有把想要的标识弄出来,也不要了,记录下来,后面再尝试吧。
发现原始读值比的结果不太好(汇报需要柱状图,科研汪的必备技能),继续处理一下:
用mean+se来做个最常展示的bar图吧:
dat=read.table("mean_sd_0413",header = T)
p3 <- ggplot(dat,aes(y=mean,x=gp))+
geom_bar(stat="identity", position=position_dodge(width=.8))+
theme(plot.title = element_text(hjust = 0.5),
axis.title = element_text(size = 10, color = "blue", face = "bold"),
axis.text.x = element_text(size = 8, angle = 45, hjust = 1, vjust = 1, face = "bold"))+
geom_errorbar(
data = dat,
aes(gp, mean, ymin = mean - sd, ymax = mean + sd),
colour = 'black',
width = 0.4
)
p3