Whittaker生物群区图
Biome译为生物群区或生物群系,由诸如植物集群、动物集群和土壤生物集群的各种生物群落组成,是生态学上气候条件相似并按照气候和地理划分的区域[1]。常以植被的类型作为标识,故又称为植被气候带。生物群系是比生态系统更大尺度的生态环境分类方式,不应与比生态系统尺度更小的群落生境混为一谈。
在全球研究中,Whittaker生物群区是一种被广泛使用的分区方式,这种方式基于温度和降水划分生物群区,不仅简单而且非常实用。目前,非常多的顶刊文章使用了Whittaker生物群区,并且将其作为底图标识自己研究点在不同生物群区的分布情况。
Whittaker biomes的各种应用
今年的NC文章中我就看到多篇文章出现了这个图,甚至配色都是一样的,如下图所示。本文将教大家如何使用R语言完成这种图的绘制,一起来学习吧!
案例一(Nature communications, 2022)
案例二(Nature communications, 2022)
绘制Whittaker biomes
Whittaker生物群区图的绘制主要用到R软件的plotbiomes包,该包是基于ggplot2包开发的,github上有对该包的官方说明[2]。
我们可以使用如下命令从github中安装plotbiomes包:
# install.packages("devtools") #devtools是从github中安装包的工具
devtools::install_github("valentinitnelav/plotbiomes")
1.默认效果图
现在我们可以尝试绘制默认效果图。
library(plotbiomes) #加载plotbiomes包
whittaker_base_plot() #默认效果图
2.修改配色
默认效果图的配色可以通过指令Ricklefs_colors来查看。
如果你有更喜欢的配色,你完全可以自定义它。你可以使用RColorBrewer包或者类似包的配色,也可以直接为每个biome的颜色赋值。
library(RColorBrewer) #一个提供多种配色方案的包
#需要为9个biome赋予9个颜色
#这里先试试RColorBrewer包的方案,例如BrBG配色方案
my_palette_1 <- rev(brewer.pal(n = 9, name = "BrBG"))
whittaker_base_plot(color_palette = my_palette_1)
# 再试试从给定3个颜色中为9个biome的颜色插值,似乎更有高级感
my_palette_2 <- colorRampPalette(colors = c("#F5F5F5", "#01665E", "#8C510A"))(9)
whittaker_base_plot(color_palette = my_palette_2)
配色方案1:my_palette_1
配色方案2:my_palette_2
3.修改主题
通常情况下,我们需要在这个底图上修改或增加其它信息,一些功能可以使用ggplot2包实现,所以我们先要再加载这个包。
library(ggplot2) #加载ggplot2包
#修改底图
ggplot() +
#添加biome底图
geom_polygon(data = Whittaker_biomes,
aes(x = temp_c, #x轴名称
y = precp_cm, #y轴名称
fill = biome), #根据biome变量填充颜色
colour = "gray98", #配色选择gray98的样式
size = 1) +
theme_bw() #修改主题样式
4.添加散点
现在我们离发表级作图只差最关键的一步,那就是添加我们的数据点在图上。
为了方便演示,我们先生成一个模拟用的数据集,当然,实际上你的手里应该不缺这种数据。这里我们打算生成随机的经纬度位置,并从世界气候数据中提取温度和降水量。
#直接运行下面这段代码吧,最终我们会得到数据集extractions
library(raster)
library(maptools)
####准备raster stack文件
#将温度和降水按raster stack文件读取
#低分辨率的raster数据集是由plotbiomes包提供的
path <- system.file("extdata", "temp_pp.tif", package = "plotbiomes")
temp_pp <- raster::stack(path)
names(temp_pp) <- c("temperature", "precipitation")
####生成随机坐标位置
data(wrld_simpl) #从maptools中加载世界地图的边界文件
#删去南极洲,栅格数据集中没有显示它
wrld_simpl <- wrld_simpl[wrld_simpl$NAME != "Antarctica", ]
#在世界地图内生成随机位置
set.seed(66) #随机数种子
points <- sp::spsample(x = wrld_simpl, n = 50, type = "random")
####从raster stack文件中提取需要的信息
#从栅格文件中提取温度和降水的值
extractions <- raster::extract(temp_pp, points, df = TRUE)
#校正温度值,因为WorldClim temperature有一个比例因子10
extractions$temperature <- extractions$temperature/10
#将降水的单位从mm转换到cm
extractions$precipitation <- extractions$precipitation/10
这时,我们得到了数据集extractions。使用head()函数可以查看其前6行,如下图。我们实战的时候可以使用自己的数据,只要把它整理成这个样子就行。
现在我们开始在biome底图上添加数据点,其实就是ggplot绘制散点图的基本操作,大家熟悉ggplot的可以自由发挥了(这里不再赘述)。
whittaker_base_plot() +
#添加数据点,x为温度,y为降水
extractions, =
temperature, =
y = precipitation),
size = 3, #散点的大小
shape = 21,
colour = "gray95",
fill = "black",
stroke = 1,
0.5) + #散点的透明度 =
theme_bw()
到这里其实就大功告成了,我们已经掌握顶刊中绘制Whittaker biomes图的独门秘籍了。这里给大家提供一个额外的英文教程[3]。对ggplot不太熟的朋友们可以参考该教程实现下面这种图的绘制。
散点分类着色的案例
图例放在内部的案例
参考资料
[1]生物群系 – 中文维基百科 (%E7%94%9F%E7%89%A9%E7%BE%A4%E7%B3%BB)
[2]GitHub – valentinitnelav/plotbiomes: R package for plotting Whittaker biomes with ggplot2()
[3]Whittaker biomes – examples (#example_with_random_locations)
写在后面
Afterword
这篇文章是本公众号第一篇关于R语言绘图的文章。虽然一上来就讲了一个顶刊的绘图技巧,但是内容是比较基础的~大家可以将代码修改后直接套用(如果用得上的话)。另外,大家如果有特别想学习的R语言知识也可以在后台给我留言哦。
声明:参考材料可能包含大量信息,如您对文章内容很感兴趣,建议您阅读推文中列出的参考材料。本文涉及的译文内容仅供参考,一切以英文原文为准。由于编译者水平有限,不当之处敬请谅解。
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777