跟着Nature Ecology&Evolution学作图:R语言ggplot2世界地图/柱形图/组合图

论文

Meta-analysis reveals less sensitivity of non-native animals than natives to extreme weather worldwide

https://www.nature.com/articles/s41559-023-02235-1

论文中提供作图用到的原始数据,我们可以试着复现一下论文中的图。今天的推文试着复现一下论文中的figure1

图片
image.png

先画一个地图

library(tidyverse)
library(readxl)

world.dat<-map_data("world")

ggplot() +
  geom_polygon(data=world.dat,aes(x=long,y=lat,group=group),
               fill="#dedede")+
  theme_bw()+
  scale_y_continuous(expand = expansion(mult=c(0,0)))+
  scale_x_continuous(expand = expansion(add=c(0,0)))+
  theme(panel.border = element_blank(),
        panel.grid = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank())+
  labs(x=NULL,y=NULL)-> world.map

world.map

figure1a代码添加采样地点

fig1a.dat<-read_excel("data/20231127/41559_2023_2235_MOESM8_ESM.xlsx",
                      sheet = "Fig1A")
fig1a.dat


world.map+
  geom_point(data=fig1a.dat,aes(x=Longitude,y=Latitude,color=sufferedECE))+
  scale_color_manual(values = c("Cold"="#b7f8ff",
                                "Drought"="#ae965b",
                                "Flood"="#4d4dff",
                                "Heatwave"="#ff6f6f",
                                "Storm"="#ffa64d"),
                     name="EWEs")+
  guides(color=guide_legend(override.aes = list(size=5)))+
  theme(legend.position = c(0.1,0.3))
图片
image.png

figure1b 代码和1a基本一致

fig1b.dat<-read_excel("data/20231127/41559_2023_2235_MOESM8_ESM.xlsx",
                      sheet = "Fig1B")
fig1b.dat


world.map+
  geom_point(data=fig1b.dat,aes(x=Longitude,y=Latitude,color=sufferedECE))+
  scale_color_manual(values = c("Cold"="#b7f8ff",
                                "Drought"="#ae965b",
                                "Flood"="#4d4dff",
                                "Heatwave"="#ff6f6f",
                                "Storm"="#ffa64d"),
                     name="EWEs")+
  guides(color=guide_legend(override.aes = list(size=5)))+
  theme(legend.position = "none")
图片
image.png

figure1c d


fig1c.dat<-read_excel("data/20231127/41559_2023_2235_MOESM8_ESM.xlsx",
                      sheet = "Fig1C") %>% 
  mutate(sufferedECE=factor(sufferedECE,levels = c("Heatwave","Cold","Storm","Flood","Drought")))
fig1c.dat

pc<-ggplot(data=fig1c.dat,aes(x=sufferedECE,y=number_effct_sizes))+
  geom_col(aes(fill=sufferedECE))+
  scale_fill_manual(values = c("Cold"="#b7f8ff",
                                "Drought"="#ae965b",
                                "Flood"="#4d4dff",
                                "Heatwave"="#ff6f6f",
                                "Storm"="#ffa64d"),
                     name="EWEs")+
  theme_bw()+
  theme(legend.position = "none",
        panel.border = element_blank(),
        panel.grid = element_blank(),
        axis.line = element_line(),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank())+
  scale_y_continuous(limits = c(0,500),
                     breaks = seq(0,500,by=100),
                     labels = c(0,100,"",300,"",500),
                     expand = expansion(mult = c(0,0)))+
  geom_text(aes(label=c(84,47,31,24,21)),vjust=-1)+
  annotate(geom = "text",x=2,y=350,label="Number of studies",hjust=0)+
  annotate(geom = "segment",x=2,y=330,xend = 2,yend=250,
           arrow=arrow(angle = 20,type="closed",length = unit(3,'mm')))+
  labs(x=NULL,y="Number of sampleneffect sizes")
pc

fig1d.dat<-read_excel("data/20231127/41559_2023_2235_MOESM8_ESM.xlsx",
                      sheet = "Fig1D") %>% 
  mutate(sufferedECE=factor(sufferedECE,levels = c("Heatwave","Cold","Storm","Flood","Drought")))
fig1d.dat

pd<-ggplot(data=fig1d.dat,aes(x=sufferedECE,y=number_effct_sizes))+
  geom_col(aes(fill=sufferedECE))+
  scale_fill_manual(values = c("Cold"="#b7f8ff",
                               "Drought"="#ae965b",
                               "Flood"="#4d4dff",
                               "Heatwave"="#ff6f6f",
                               "Storm"="#ffa64d"),
                    name="EWEs")+
  theme_bw()+
  theme(legend.position = "none",
        panel.border = element_blank(),
        panel.grid = element_blank(),
        axis.line = element_line(),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank())+
  scale_y_continuous(limits = c(0,2000),
                     breaks = seq(0,2000,by=500),
                     labels = c(0,500,"",1500,""),
                     expand = expansion(mult = c(0,0)))+
  geom_text(aes(label=c(74,32,129,47,76)),vjust=-1)+
  labs(x=NULL,y="Number of sampleneffect sizes")

pd

pc+pd
图片
image.png

figure1e

fig1e.dat<-read_excel("data/20231127/41559_2023_2235_MOESM8_ESM.xlsx",
                      sheet = "Fig1E") %>% 
  rename("group"="...1") %>% 
  pivot_longer(!group)

fig1e.dat

pe<-ggplot(data=fig1e.dat,aes(x=name,y=value))+
  geom_bar(stat="identity",
           aes(fill=group),
           position = "dodge")+
  theme_bw()+
  theme(panel.border = element_blank(),
        panel.grid = element_blank(),
        axis.line.y = element_line(),
        axis.ticks.x = element_blank(),
        axis.text.x = element_text(angle=90,hjust=1),
        legend.position = c(0.8,0.8))+
  scale_y_continuous(limits = c(0,36),
                     expand = expansion(mult=c(0,0)),
                     breaks = seq(0,35,by=5),
                     labels = c(0,5,"",15,"",25,"",35))+
  scale_fill_manual(values = c("nonnative_prop"="#7fb3ff",
                               "native_prop"="#00008a"),
                    name="",
                    labels=c("Native","Non-native"))+
  labs(x=NULL,y="Proportion of samplen(effect sizes(%)")
pe
图片
image.png

5个图组合到一起

part1<-pa+pc+pb+pd+
  plot_layout(ncol = 2,nrow=2,widths = c(3,1))

part1/pe+
  plot_layout(nrow=2,heights = c(2,1))+
  plot_annotation(tag_levels = 'a') 
图片
image.png

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

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/384624.html

(0)
联系我们
联系我们
分享本页
返回顶部