首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >跟着nature microbiology学绘图-多元素注释小提琴图

跟着nature microbiology学绘图-多元素注释小提琴图

作者头像
R语言数据分析指南
发布2024-03-11 13:51:40
发布2024-03-11 13:51:40
2880
举报

欢迎关注R语言数据分析指南

❝本节来根据nature microbiology上的一张图表来绘制相似风格的图,多元素注释小提琴图,「图形内容非常的丰富包含众多的元素」,数据为随意构建无意义,整个过程仅参考。希望对各位观众老爷能有所帮助。「数据代码已经整合上传到会员交流群」,购买过小编VIP的朋友可在所加的会员群内获取下载,有需要的朋友可关注文中介绍加入VIP交流群。 ❞

原图

仿图

加载R包

注:此代码需要安装最新版ggplot2 3.5版

代码语言:javascript
复制
install.packages("ggplot2")
library(tidyverse)
library(ggh4x)

导入数据

代码语言:javascript
复制
df <- read_tsv("data.xls") %>% 
  mutate(year=as.character(year))

定义因子

代码语言:javascript
复制
df$continent <- factor(df$continent,levels = c("Asia","Americas","Europe"))

计算p值

代码语言:javascript
复制
df_p_val1 <- df %>% group_by(continent)%>%
  wilcox_test(lifeExp ~year) %>%
  adjust_pvalue(p.col="p",method="bonferroni") %>%
  add_significance(p.col="p.adj") %>% 
  add_xy_position(x="year",dodge=0.8)

数据可视化

代码语言:javascript
复制
df %>% ggplot(aes(year,lifeExp))+
  annotate("rect", xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 41.5, 
           fill = "cornflowerblue", alpha = .3, color = NA)+
  annotate("rect", xmin = -Inf, xmax = Inf, ymin = 80, ymax = Inf, 
           fill = "#FCAE12", alpha = .3, color = NA) +
  geom_violin(aes(fill=continent),trim = FALSE,show.legend = F)+
  geom_boxplot(width = 0.2,outliers = FALSE, staplewidth = 0.5) +
  scale_y_continuous(sec.axis = sec_axis(~ ., name = ""))+
  geom_hline(yintercept = 80,linetype=2)+
  geom_hline(yintercept = 41.5,linetype=2)+
  facet_nested_wrap(. ~ continent,
                    strip = strip_nested(background_x = 
                                           elem_list_rect(fill=c("#3B9AB2","#7294D4","#E6A0C4")))) +
  scale_fill_manual(values = c("#3B9AB2","#7294D4","#E6A0C4"))+
  labs(x=NULL,y=NULL)+
  theme(axis.text.x=element_text(angle = 0,vjust=0.5,hjust=0.5,color="black"),
        axis.text.y=element_text(color="black"),
        plot.background = element_rect(fill="white"), 
        panel.background = element_rect(fill="white"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.spacing.x = unit(0,"cm"),
        plot.margin=unit(c(0.5,0.5,0.5,0.5),unit="cm"))
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎关注R语言数据分析指南
  • 原图
  • 仿图
  • 加载R包
  • 导入数据
  • 定义因子
  • 计算p值
  • 数据可视化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档