跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...

简介:R语言统计与绘图公众号目前致力于分享医学统计与R绘图知识,手把手教你使用R语言绘制基线特征表、KM生存曲线、森林图、ROC曲线等。每天一篇精彩R语言推文教程,手把手带你入门R语言绘图。

今天推文重复的图来自于 论文Whole-genome resequencing of 445 Lactuca accessions reveals the domestication history of cultivated lettuce

跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...
image.png

这篇论文的数据是公开的,代码也公开了一部分,那我们就可以按照他的提供的数据来试着复原一些论文中的图了。本来已经重复到了论文中Fig1的2c,但是试着做局部放大的时候遇到了一些问题,暂时还搞不定,看了其他的图实现起来还有一定的难度。所以先挑一个相对比较简单的箱线图来模仿一下吧。对应的是论文中的Figure 2d

跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...
image.png

数据是论文附件的  Source Data Fig.2

跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...
image.png
首先是读入数据
df<-readxl::read_excel('NG/41588_2021_831_MOESM5_ESM.xlsx',
                      sheet='Fig2d')

论文中提供的是宽格式数据,如果使用ggplot2作图需要转换成长格式,这里本来想尝试一下tidyr包中的pivot_longer()函数了,帮助文档没有看明白。没有搞定,还是直接使用reshape2中的melt()函数吧

library(dplyr)
df %>% 
  mutate(new_col=paste(Group1,Group2,sep='_')) %>% 
  select(-c('Group1','Group2','Group3','Outgroup')) %>% 
  #reshape2::melt(var.ids=c('Group1')) %>% 
  #arrange(Group1,Group2) %>% 
  reshape2::melt(var.ids='new_col') -> df1

head(df1)
ggplot2 作图
library(ggplot2)
library(stringr)
library(ggprism)
x_level<-paste(df$Group1,df$Group2,sep='_')
x_level
df1$group<-str_sub(df1$new_col,5,7)
df1$new_col<-factor(df1$new_col,
                    levels = x_level)
ggplot(df1,aes(x=new_col,y=value))+
  stat_boxplot(geom = 'errorbar',width=0.2)+
  geom_boxplot(outlier.shape = 1,
               aes(fill=group),
               show.legend = F)+
  scale_fill_manual(values = c('#e64b35',
                               '#4daf4a',
                               '#4dbbd5',
                               '#cab2d6',
                               '#b2df8a'))+
  scale_x_discrete(labels=str_sub(x_level,1,3),
                   guide = 'prism_offset')+
  scale_y_continuous(limits = c(-0.021,0.085),
                     breaks = seq(-0.02,0.08,by=0.02))+
  theme_prism(axis_text_angle = 90,
              base_line_size = 0.1,
              base_fontface = 'plain',
              base_family = 'serif')+
  labs(x=NULL,
       y=expression(paste(italic('D'),' statistic')))+
  theme(plot.margin = unit(c(0.2,0.2,2,0.2),'cm'))+
  
  geom_segment(x=1,xend=5,y=-0.04,yend=-0.04)+
  annotate('text',x=3,y=-0.02,label='CAU',vjust=10)+
  geom_segment(x=6,xend=9,y=-0.04,yend=-0.04)+
  annotate('text',x=7.5,y=-0.02,label='SEU',vjust=10)+
  geom_segment(x=10,xend=12,y=-0.04,yend=-0.04)+
  annotate('text',x=11.5,y=-0.02,label='WEU',vjust=10)+
  geom_segment(x=13,xend=14,y=-0.04,yend=-0.04)+
  annotate('text',x=13.5,y=-0.02,label='EEU',vjust=10)+
  geom_segment(x=14.5,xend=15.5,y=-0.04,yend=-0.04)+
  annotate('text',x=15,y=-0.02,label='WAS',vjust=10)+
  annotate('text',x=1,y=-0.02,label='P1',
           hjust=2,vjust=5)+
  annotate('text',x=1,y=-0.02,label='P2',
           hjust=2,vjust=10)+
  coord_cartesian(clip = 'off')
跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...
image.png

箭头指的地方如何用代码缩短暂时不知道了,出图后手动调整吧

最终结果

跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...
image.png

这里遇到的问题是

  • 如何将箱线图的垂直线改成虚线呢?
2021-04-30 原文

跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...的相关文章

技术贴 | R语言ggplot2给箱图添加散点和连线

本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 在R中ggplot是一个非常灵活的绘图函数.ggplot2加geom_boxplot()可以绘制箱图,通过geom_ ...

技术贴 | R语言只画图例不画图

本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 分享一个利用R语言在画板中只画图例不画图的方法.第一步还是需要用plot一个图,但是利用一些参数可以将图清除掉,然后 ...

手把手教你使用R语言绘制交互效应的森林图

交互效应分析在SCI中是一个重要的组成,可以表示特殊的人群(也就是亚组)中自变量和因变量的结果关系,可以说是高分SCI必做的项目,在SCI中,这一部分结果很多都是以森林图来展示,这样结果又直观有方便分 ...

技术贴 | R语言pheatmap聚类分析和热图

本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 pheatmap默认会对输入矩阵数据的行和列同时进行聚类,但是也可以通过布尔型参数cluster_rows和clus ...

科研 | Nature Genetics:基因组、转录组以及表观遗传组学确定了不同HPV分支感染个体中宫颈癌

编译:小北,编辑:夏甘草.江舜尧. 原创微文,欢迎转发转载. 导读 宫颈癌是影响撒哈拉以南亚洲女性最常见的癌症并且在HIV阳性的个体中盛行.目前为止对这一肿瘤基因组.转录组以及表观遗传组学的综合图谱尚 ...

技术贴 | R语言:大样本多组学的相关性计算、热图绘制

本文由可爱的乔巴根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 上期介绍了利用psych包计算两组小样本的相关性并进行热图可视化,但当样本数据量非常大时,psych包会耗费的时 ...

技术贴 | R语言:小样本多组学的相关性计算、热图绘制

本文由可爱的乔巴根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 在多组学数据关联挖掘中,在我们筛选到目标基因集以及目标蛋白质集合或目标代谢物集合后,在进行基因与蛋白质或代谢关联 ...

技术贴 | R语言:组学关联分析和pheatmap可视化

本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 举例展示R语言组学关联分析的方法.宏基因组数据以KO-样品丰度表为例.代谢组数据以metabolite-样品丰度表为例.基 ...

直播!R语言入门和ggplot2科研数据可视化入门分享!就在今晚,欢迎大家参加呀!

会议时间:2021/03/17 19:30-21:30 (GMT+08:00) 点击链接入会,或添加至会议列表:https://meeting.tencent.com/s/H9goXk0EWnqO 会 ...