前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着NatureEcology&Evolution学作图:R语言smplot2画云雨图

跟着NatureEcology&Evolution学作图:R语言smplot2画云雨图

作者头像
用户7010445
发布2023-12-11 14:27:45
2610
发布2023-12-11 14:27:45
举报

论文

The evolution of human altriciality and brain development in comparative context

https://www.nature.com/articles/s41559-023-02253-z

数据代码

https://figshare.com/articles/dataset/The_evolution_of_human_altriciality_and_brain_development_in_comparative_context/22242724

论文中的数据和代码都有,看论文,然后对应数据和代码,应该能更好的理解论文的内容。今天的推文我们复现一下论文中的Figure1bcef 云雨图

这里用到的是smplot2这个R包

对应的github主页是 https://github.com/smin95/smplot2

还有专门的文档介绍这个R包的用法 https://smin95.github.io/dataviz/

读取数据

代码语言:javascript
复制
library(tidyverse)
#devtools::install_github('smin95/smplot2')
library(smplot2)
mammals<-read.table("data/20231205/final_compilation with percentage values.R1.csv",
                    header=T,sep=",",row.names=1)

colnames(mammals)

mammals %>% 
  select(NeoBody,AdultBody,BodyRatio) %>% 
  head()

mammals %>% pull(Order2) %>% table()

mammals %>% pull(Over500gr) %>% table()

ordercolors<-c("coral1","lightslateblue","olivedrab3",
               "goldenrod1","lightgray")
mammals$Order2 <- factor(mammals$Order2, 
                         levels = c("Artiodactyla", "Carnivora", 
                                    "Primates", "Rodentia", "Others"))

mammals$Over500gr<-factor(mammals$Over500gr,
                          levels = c("Perissodactyls","Cetaceans",
                                     "Arctoids","Hominids","Elephants","Others"))

figure1b

代码语言:javascript
复制
ggplot(mammals, aes(x = Order2, y = 100*BodyRatio, fill = Order2)) + 
  ylim(0,100)+
  labs(y="Body Proportion (%)",x="")+
  scale_fill_manual(values = ordercolors)+
  sm_raincloud() +
  theme(text = element_text(size = 13))+
  scale_x_discrete(labels = c('Artio','Carn','Prim','Rod','Others'))

image.png

这个配色还挺好看的,另外3个图和这个图基本一致,这个R包还挺好用的,一行代码就出这个图

另外3个图的代码

代码语言:javascript
复制
ggplot(mammals, aes(x = Order2, y = 100*BrainRatio, fill = Order2)) + 
  ylim(0,100)+
  labs(y="Brain Proportion (%)",x="")+
  scale_fill_manual(values = ordercolors)+
  sm_raincloud() +
  theme(text = element_text(size = 13))+
  scale_x_discrete(labels = c('Artio','Carn','Prim','Rod','Others'))


ggplot(mammals %>% 
         filter(Over500gr != "Others"), 
       aes(x = Over500gr, y = 100*BrainRatio, fill = Order2)) + 
  ylim(0,100)+
  labs(y="Brain Proportion (%)",x="")+
  scale_fill_manual(values = ordercolors)+
  sm_raincloud() +
  theme(text = element_text(size = 13))+
  scale_x_discrete(labels = c('Peeriss','Cet','P&B','Hom','Eleph'))


ggplot(mammals %>% 
         filter(Over500gr != "Others"), 
       aes(x = Over500gr, y = 100*BodyRatio, fill = Order2)) + 
  ylim(0,100)+
  labs(y="Body Proportion (%)",x="")+
  scale_fill_manual(values = ordercolors)+
  sm_raincloud() +
  theme(text = element_text(size = 13))+
  scale_x_discrete(labels = c('Peeriss','Cet','P&B','Hom','Eleph'))

四个图组合到一起

代码语言:javascript
复制
fig1b<-ggplot(mammals, aes(x = Order2, y = 100*BodyRatio, fill = Order2)) + 
  ylim(0,100)+
  labs(y="Body Proportion (%)",x="")+
  scale_fill_manual(values = ordercolors)+
  sm_raincloud() +
  theme(text = element_text(size = 13))+
  scale_x_discrete(labels = c('Artio','Carn','Prim','Rod','Others'))

fig1c<-ggplot(mammals, aes(x = Order2, y = 100*BrainRatio, fill = Order2)) + 
  ylim(0,100)+
  labs(y="Brain Proportion (%)",x="")+
  scale_fill_manual(values = ordercolors)+
  sm_raincloud() +
  theme(text = element_text(size = 13))+
  scale_x_discrete(labels = c('Artio','Carn','Prim','Rod','Others'))

fig1d<-ggplot(mammals %>% 
         filter(Over500gr != "Others"), 
       aes(x = Over500gr, y = 100*BodyRatio, fill = Order2)) + 
  ylim(0,100)+
  labs(y="Body Proportion (%)",x="")+
  scale_fill_manual(values = ordercolors)+
  sm_raincloud() +
  theme(text = element_text(size = 13))+
  scale_x_discrete(labels = c('Peeriss','Cet','P&B','Hom','Eleph'))

fig1e<-ggplot(mammals %>% 
         filter(Over500gr != "Others"), 
       aes(x = Over500gr, y = 100*BrainRatio, fill = Order2)) + 
  ylim(0,100)+
  labs(y="Brain Proportion (%)",x="")+
  scale_fill_manual(values = ordercolors)+
  sm_raincloud() +
  theme(text = element_text(size = 13))+
  scale_x_discrete(labels = c('Peeriss','Cet','P&B','Hom','Eleph'))

library(patchwork)

fig1b+fig1c+fig1d+fig1e+
  plot_annotation(tag_levels = list(c("b","c","d","e")))

image.png

示例数据和代码可以到论文中下载,或者给推文打赏一元获取我整理好的代码

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 论文
  • 数据代码
  • 读取数据
  • figure1b
  • 四个图组合到一起
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档