一、准备工作
要获得XX物种的世界分布图,需要知道该物种学名,以及本实验室或已查询到的采集表(因为GBIF上数据有的不太全)
二、打开R,开始啦
使用脚本为my R with 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.如果是多个物种作图,再结合本地数据,需要把不同物种的表汇总在一起,格式如下:
3.最后生成的图片在选择点的大小和导出图片大小时可以多尝试调整一下,调一个最合适的,后期也可以再AI调整一下坐标大小以及图例大小