问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

使用R和GBIF制作物种全球分布图的完整指南

创作时间:
作者:
@小白创作中心

使用R和GBIF制作物种全球分布图的完整指南

引用
CSDN
1.
https://blog.csdn.net/weixin_44562189/article/details/133746409

本文将介绍如何使用R语言和GBIF(全球生物多样性信息设施)数据来制作物种在全球范围内的分布图。通过本教程,读者将学习到如何获取物种分布数据、处理数据以及使用ggplot2包绘制美观的物种分布图。

一、准备工作

要获得特定物种的世界分布图,需要知道该物种的学名,以及实验室已有的采集数据(因为GBIF上的数据可能不够全面)。

二、R脚本实现

使用以下R脚本(my R with GBIF.R)来下载GBIF中的物种信息并绘制全球分布图。请确保已经安装了所需的R包。

# 此代码用于下载GBIF中物种信息以及在绘制在全球范围分布图,全球年均气温图自己后期制作

# 每次需要改开始的两个物种名,保存数据的文件名,这边更改了R中可以自动更新  
setwd(dir="E:/R and GBIF/TEST3") # 设置工作目录#首先需要这个文件夹存在才能设置这个目录  
# 调用R包  
library(rgbif)  
library(dplyr)  
library(raster)  
library(maptools)  
library(CoordinateCleaner)  
library(ggmap)  
library(ggplot2)  
library(maps)  
key <- name_suggest(q="Umbilicaria deusta", rank='species')$data$key  
key#物种识别号#不同物种需要更改这里的物种名  
occ_count(taxonKey=key, georeferenced=TRUE, basisOfRecord= "PRESERVED_SPECIMEN")#GBIF中可查到的记录数  
data <- occ_search(scientificName = "Umbilicaria deusta", limit= 1000, hasCoordinate = TRUE, basisOfRecord= "PRESERVED_SPECIMEN")#下载数据#不同物种需要更改这里的物种名  
str(data$data)#展示数据结构  
names(data$data)#检查数据的列名  
head(data$data[,c("countryCode","country")])  
datasel<-data$data %>%  
          dplyr::select(species, decimalLongitude,  
decimalLatitude,country,coordinateUncertaintyInMeters) %>%  
         rename(Species = species, Long = decimalLongitude, Lat =  
decimalLatitude, Uncertain=coordinateUncertaintyInMeters) %>%  
         mutate (Species = as.factor(Species), country=  
as.factor(country))#生成数据框并改列名#这里有可能会报错,报XX错误就把XX删掉就行  
datasel  
datasel %>% filter(Long==0, Lat==0)# 统计经纬度等于零的记录,用于检查错误数据  
datasel_cleanF <- datasel %>% distinct(Long, Lat,.keep_all=T)#清除重复数据  
str(datasel_cleanF)  
write.table(datasel_cleanF, file = "UL_distribution.xlsx",quote = F, sep = "\\t",row.names = F)#保存数据至Excel表#这个命令就会在之前设置的那个目录下生成excel表  
world_map <- map_data("world") # maps包map_data()中获取世界地图数据  
world_map  
p1 <- ggplot()+  
  geom_polygon(data = world_map, aes(x = long, y = lat,group = group),  
               fill='white',colour="black",size=0.25)+  
  geom_point(data = X22species,aes(x = Long, y = Lat,fill = Species),  
             alpha = 0.5,shape = 21,size = 3) #这个size大小可以自己调整,合适为好

#这里的data=XX就是我们要作图的数据表  
  #+geom_text(data=datasel_cleanF,aes(x=Long, y=Lat, label=Species),vjust=1.5,colour="black",size=3) # 添加物种标签  
  #+geom_label(data = world_map,aes(x = long, y = lat, label = region),fill='orange',colour="black",size=3) # 给地图安区域添加地域标签  
p1#输出图片手动下载一下把(我怕又出错)

三、运行注意事项

  1. 如果是单个物种作图,没有本地数据,直接用生成的UL_distribution.xlsx数据打点在地图上即可,红色点。

  2. 如果是多个物种作图,再结合本地数据,需要把不同物种的表汇总在一起,格式如下:

  1. 最后生成的图片在选择点的大小和导出图片大小时可以多尝试调整一下,调一个最合适的,后期也可以再AI调整一下坐标大小以及图例大小

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号