❝本节来复现「nature microbiology」上的一张「箱线图」,小编在绘图代码中加入了一些新的数据处理方式,感兴趣的观众老爷细细品味,下面来进行具体介绍,「数据代码已经上传VIP交流群」
❞
❝❞
有需要学习数据可视化的朋友欢迎加入小编2022年度VIP群,目前群内已经上传公众号文档「数据+代码约200篇」,VIP交流群(1)已经500人满员,随着内容不断增多,为了更好的创做内容现在进群需「付费149元」,若转发此文档到朋友圈集赞20个可优惠20元,早进早享受;加入小编的VIP如果你有一些让我感兴趣的图表提供示例数据小编若有时间会写成推文发送
加载R包
library(tidyverse)
library(ggpubr)
library(magrittr)
library(ggsci)
library(ggsignif)
导入数据
df <- read_tsv("data.txt") %>% slice(.,-1)
构建文本
text <- df %>% filter(sample !="Geometric mean") %>% column_to_rownames(var="sample") %>%
log10() %>%
summarise_if(is.numeric, max) %>%
rownames_to_column(var="sample") %>%
pivot_longer(-sample) %>% select(-1) %>%
left_join(.,df %>% filter(sample =="Geometric mean") %>%
pivot_longer(-sample) %>% select(-1),by="name") %>%
set_colnames(c("name","value","num")) %>%
mutate(num=round(num,digits = 1))
数据清洗
df2 <- df %>% filter(sample !="Geometric mean") %>% column_to_rownames(var="sample") %>%
log10() %>%
rownames_to_column(var="sample") %>%
pivot_longer(-sample)
定义因子
df2$name <- factor(df2$name,levels = colnames(df) %>% as.data.frame() %>% slice(.,-1) %>% pull())
数据可视化
df2 %>% ggplot(aes(name,value)) +
stat_boxplot(geom="errorbar",position=position_dodge(width=0.2),width=0.1)+
geom_boxplot(position=position_dodge(width =0.2),width=0.4)+
geom_point(aes(fill=name,group=sample,color=name),pch=21,
position = position_dodge(0.2))+
geom_text(data=text,aes(label=num,y=value+0.1),size=4,color="black",hjust=0.5,vjust=0.5)+
geom_signif(comparisons = list(c("SARS-CoV-2 Beta","SARS-CoV-2 Omicron BA.1")),
map_signif_level=T,
textsize=6,test=wilcox.test,step_increase=0.2)+
scale_size_continuous(range=c(1,3))+
stat_cor(label.y = 4,aes(label = paste(..rr.label.., ..p.label.., sep = "~`,`~"),group=1),color="black",
label.x.npc="middle")+
stat_regline_equation(label.y = 3.75,aes(group=1),color="black",label.x.npc = "middle")+
scale_fill_simpsons(alpha=0.7)+
scale_color_simpsons(alpha=0.7)+
labs(x=NULL,y=NULL)+
theme(plot.margin=unit(c(0.5,0.5,0.5,0.5),units=,"cm"),
axis.line = element_line(color = "black",size = 0.4),
panel.grid.minor = element_blank(),
panel.grid.major = element_line(size = 0.2,color = "#e5e5e5"),
panel.background = element_blank(),
axis.text.y = element_text(color="black",size=10,face="bold"),
axis.text.x = element_text(color="black",size=10,vjust=0.5,hjust = 1,
face="bold",angle = 90),
axis.line.x.top = element_line(color="black"),
axis.text.x.top = element_blank(),
axis.ticks.y.right=element_blank(),
axis.text.y.right = element_blank(),
axis.ticks.x.top=element_blank(),
panel.spacing.x = unit(0,"cm"),
panel.border = element_blank(),
legend.position = "none",
panel.spacing = unit(0,"lines")
)+guides(x.sec="axis",y.sec = "axis")
❝本节介绍到此结束,可以看到主要还是数据处理步骤,喜欢的观众老爷欢迎分享转发;「当然更推荐大家加入我的VIP交流群」扫描下方二维码加小编微信「付费149元」后邀请进群,「一定让你感受到物超所值」,「添加小编微信请备注来意,以便高效处理」
❞
小编微信

关注下方公众号下回更新不迷路
往期推荐

