Whittaker生物群区图

Biome译为生物群区或生物群系,由诸如植物集群、动物集群和土壤生物集群的各种生物群落组成,是生态学上气候条件相似并按照气候和地理划分的区域[1]。常以植被的类型作为标识,故又称为植被气候带。生物群系是比生态系统更大尺度的生态环境分类方式,不应与比生态系统尺度更小的群落生境混为一谈。

在全球研究中,Whittaker生物群区是一种被广泛使用的分区方式,这种方式基于温度和降水划分生物群区,不仅简单而且非常实用。目前,非常多的顶刊文章使用了Whittaker生物群区,并且将其作为底图标识自己研究点在不同生物群区的分布情况。

Whittaker biomes的各种应用

今年的NC文章中我就看到多篇文章出现了这个图,甚至配色都是一样的,如下图所示。本文将教大家如何使用R语言完成这种图的绘制,一起来学习吧!

BiomeSize_Biomeso肌活糙米水_biomes

案例一(Nature communications, 2022)

BiomeSize_Biomeso肌活糙米水_biomes

案例二(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() #默认效果图

biomes_Biomeso肌活糙米水_BiomeSize

2.修改配色

默认效果图的配色可以通过指令Ricklefs_colors来查看。

Biomeso肌活糙米水_biomes_BiomeSize

如果你有更喜欢的配色,你完全可以自定义它。你可以使用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.添加散点

现在我们离发表级作图只差最关键的一步,那就是添加我们的数据点在图上。

为了方便演示,我们先生成一个模拟用的数据集,当然,实际上你的手里应该不缺这种数据。这里我们打算生成随机的经纬度位置,并从世界气候数据中提取温度和降水量。

#直接运行下面这段代码吧,最终我们会得到数据集extractionslibrary(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有一个比例因子10extractions$temperature <- extractions$temperature/10#将降水的单位从mm转换到cmextractions$precipitation <- extractions$precipitation/10

这时,我们得到了数据集extractions。使用head()函数可以查看其前6行,如下图。我们实战的时候可以使用自己的数据,只要把它整理成这个样子就行。

biomes_Biomeso肌活糙米水_BiomeSize

现在我们开始在biome底图上添加数据点,其实就是ggplot绘制散点图的基本操作,大家熟悉ggplot的可以自由发挥了(这里不再赘述)。

whittaker_base_plot() +  #添加数据点,x为温度,y为降水  geom_point(data = extractions,              aes(x = temperature,                  y = precipitation),              size   = 3, #散点的大小             shape  = 21,             colour = "gray95",              fill   = "black",             stroke = 1,             alpha  = 0.5) + #散点的透明度  theme_bw()

biomes_Biomeso肌活糙米水_BiomeSize

到这里其实就大功告成了,我们已经掌握顶刊中绘制Whittaker biomes图的独门秘籍了。这里给大家提供一个额外的英文教程[3]。对ggplot不太熟的朋友们可以参考该教程实现下面这种图的绘制。

BiomeSize_Biomeso肌活糙米水_biomes

散点分类着色的案例

Biomeso肌活糙米水_BiomeSize_biomes

图例放在内部的案例

参考资料

[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)

Biomeso肌活糙米水_biomes_BiomeSize

写在后面

Afterword

这篇文章是本公众号第一篇关于R语言绘图的文章。虽然一上来就讲了一个顶刊的绘图技巧,但是内容是比较基础的~大家可以将代码修改后直接套用(如果用得上的话)。另外,大家如果有特别想学习的R语言知识也可以在后台给我留言哦。

声明:参考材料可能包含大量信息,如您对文章内容很感兴趣,建议您阅读推文中列出的参考材料。本文涉及的译文内容仅供参考,一切以英文原文为准。由于编译者水平有限,不当之处敬请谅解。

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注