计算机@linux_python_R 技术帖R语言

2020-04-14 ggplot2进阶-区域放大,交互注释

2020-04-14  本文已影响0人  程凉皮儿

上个月在表观学习小组的讨论上,说起过文章里面的区域放大效果图怎么做的,当时还没有了解到真的有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
程良平的实验数据
上一篇 下一篇

猜你喜欢

热点阅读