开封网站建设流程与开发步骤,建设网站细节,湖州设计公司,珠海网站建设q.479185700強Biomod11.栅格数据处理1.1 读取一个栅格图片1.2 计算数据间的相关系数1.3 生成多波段的栅格图像1.4 修改变量名称1.4.1 计算多个变量之间的相关性2. 矢量数据处理2.1 提取矢量数据2.2 数据掩膜2.2 栅格计算2.3 拓展插件的使用3. 图表绘制3.1 遥感影像绘制3.2 柱状图分析图绘制3…
Biomod11.栅格数据处理1.1 读取一个栅格图片1.2 计算数据间的相关系数1.3 生成多波段的栅格图像1.4 修改变量名称1.4.1 计算多个变量之间的相关性2. 矢量数据处理2.1 提取矢量数据2.2 数据掩膜2.2 栅格计算2.3 拓展插件的使用3. 图表绘制3.1 遥感影像绘制3.2 柱状图分析图绘制3.3 在图表中生成标准线平均值或期望值3.4 箱线图绘制3.4.1 图像优化4. 线性回归模型今天学习了一下物种分布模型方面的知识现在进行一个总结和回顾。 
1.栅格数据处理 
library(raster)
library(tidyverse)
matrix(1:9, nrow  3, ncol  3)# 生成一个栅格矩阵
raster(matrix(1:9, 3))
raster(matrix(1:9, 3)) %% plot()# 生成一个简单的栅格图片
r-raster(ncol  30, nrow  30)
values(r) - 1:ncell(r) # ncell(r):表示r的栅格个数共900个
plot(r)生成一个简单的栅格图像Raster 自定义一个栅格图像30*30  
1.1 读取一个栅格图片 
# 读取栅格图片
raster(system.file(external/rlogo.grd, package  raster)) %% plot() #管道函数这是R语言自带的图片  
1.2 计算数据间的相关系数 
# 计算相关系数
cor(runif(100,0,10),runif(100,0,10)) # 提供两个长度一直的向量0.0046693 
1.3 生成多波段的栅格图像 
r1 - raster(matrix(runif(900), 30, 30))
r2 - raster(matrix(runif(900), 30, 30))
r3 - raster(matrix(runif(900), 30, 30))
r4 - raster(matrix(runif(900), 30, 30))
r5 - raster(matrix(runif(900), 30, 30))
# 将五个栅格图层堆叠在一起形成多波段影像
stack(r1, r2, r3, r4, r5) 
stack(r1, r2, r3, r4, r5) %% plot()结果展示  
1.4 修改变量名称 
# 更改变量名称
df - stack(r1, r2, r3, r4, r5) %%as.data.frame(xy  T) %%as_tibble() %%setNames(c(lon, lat, x1, x2, x3, x4, y)) # 重命名
head(df)1.4.1 计算多个变量之间的相关性 
## 变量间相关性 法1
cor(df[, c(x1,x2,x3,x4,y)])## 变量间相关性法2
#devtools::install_github(danlwarren/ENMTools) # 注意:大概需要安装46个packages
# 安装的时候会出现一些问题不太好安装
library(ENMTools) 
raster.cor.matrix(stack(r1, r2, r3, r4, r5))2. 矢量数据处理 
2.1 提取矢量数据 
install.packages(mapchina)
library(mapchina)
cd_sf - mapchina::china %%dplyr::filter(Name_Perfecture  成都市) %%group_by(Name_Province) %%summarise(geometry  sf::st_union(geometry)) %%ungroup()
colnames(cd_sf) # see all variable names
plot(cd_sf)2.2 数据掩膜 
# 使用本地数据DEM进行掩膜
china_dem - raster(D:/Datasets/w001001.adf)
bj_dem - china_dem %%crop(bj_sf) %%mask(bj_sf)
plot(bj_dem)2.2 栅格计算 
类似于一个二分类问题 
res - stack(r1, r2) %%calc(x  ., fun  function(x) {ifelse(x[1]  0.5  x[2]  0.5, 0, 1) # 对数据进行二分类处理,# 同时满足返回0否则返回1})
res
plot(res)使用case_when函数能解决上面的问题更方便 
# 使用case_when函数
stack(r1, r2) %%as.data.frame(xy  T) %% # 将数据转换为数据框格式mutate(res  case_when(layer.1  0.5  layer.2  0.5 ~ 0,TRUE ~ 1)) %%dplyr::select(1, 2, last_col()) %%as_tibble() %%plot()getValues(res) %% head(10)2.3 拓展插件的使用 
更方便查看和统计数据 
# 拓展插件
#install.packages(flextable)
library(flextable)
tibble(model  LETTERS[1:10], mean  runif(10, 0.4, 1)) %%mutate(sd  runif(10, 0.01, 0.1)) %%mutate(weight  mean / sum(mean)) %%regulartable() %%flextable::align(align  center, part  all) %%theme_booktabs()3. 图表绘制 
3.1 遥感影像绘制 
library(terra)
library(tidyterra)
library(ggspatial)
ggplot()geom_spatraster(data  rast(bj_dem)) scale_fill_whitebox_c(palette  muted,na.value  white) annotation_scale() annotation_north_arrow(which_north  grid)theme() 3.2 柱状图分析图绘制 
AUC、TSS展示 
# AUC、TSS绘制
tibble(model1  LETTERS[1:10], AUC  runif(10, 0.6, 1), TSS  runif(10, 0.6, 1)) %% ggplot()geom_col(aes(model1,AUC))##---------------------------------------------------------------------
tibble(model  LETTERS[1:10], AUC  runif(10, 0.6, 1), TSS  runif(10, 0.6, 1)) %%pivot_longer(-model,names_to  vars,values_to  value) %% ggplot()geom_col(aes(model,value,fill  vars),position  dodge)ggsci::scale_fill_lancet()labs(x  建模算法,y  AUC/TSS,fill  )theme_light()3.3 在图表中生成标准线平均值或期望值 
# 生成选择线
install.packages(extrafont)
install.packages(showtext)
library(extrafont)
library(showtext)
showtext_auto(enable  TRUE)
font_add(Times, regular ./font/Times New Roman.ttf) # 字体选择
font_add(KaiTi, regular ./font/KaiTi.ttf)
font_add(wqy, regular  wqy-microhei.ttc)set.seed(123)
tibble(model  LETTERS[1:10], AUC  runif(10, 0.6, 1), TSS  runif(10, 0.6, 1)) %%pivot_longer(-model,names_to  vars,values_to  value) %% ggplot()geom_col(aes(model,value,fill  vars),position  dodge)geom_hline(yintercept  0.6,linetype  2,size  0.5) # 选择线的位置即y的大小geom_hline(yintercept  0.75,linetype  1.5,size  1)ggsci::scale_fill_lancet()labs(x  建模算法,y  AUC/TSS,fill  )theme_light()theme(axis.text.x  element_text(size  13, family  KaiTi,angle  45),axis.title.x  element_text(size  15,family  KaiTi),legend.text  element_text(size  11,family  Times),axis.text.y  element_text(size  11,family  Times),axis.title.y  element_text(size  13,family  Times),legend.position  bottom)3.4 箱线图绘制 
这是一个非常好用的packageDT能够更方便的显示数据表 
tibble(vars  paste0(vars,rep(1:5,50)),model  rep(LETTERS[1:5],each  50),weight  runif(250,0.5,1),run  rep(rep(1:5,each  5),10)) %% DT::datatable()  # 调用DT中的datatable函数显示数据tibble(vars  paste0(vars,rep(1:5, 50)), # ,1到5重复50次并与vars粘贴model  rep(LETTERS[1:5],each  50),weight  runif(250,0.5,1),run  rep(rep(1:5,each  5),10)) %% ggplot()geom_boxplot(aes(vars,weight,fill  model),alpha  0.8)theme_bw()theme(panel.grid  element_blank())theme(textelement_text(size12,  familyserif))3.4.1 图像优化 
# 图像优化
tibble(vars  paste0(vars,rep(1:5,50)),model  rep(LETTERS[1:5],each  50),weight  runif(250,0.5,1),run  rep(rep(1:5,each  5),10)) %% ggplot()geom_boxplot(aes(vars,weight,fill  model),alpha  0.8)ggsci::scale_fill_lancet()labs(x  预测变量,y  贡献度,fill  )ggthemes::theme_economist_white()theme_bw()theme(axis.text.x  element_text(size  13, family  RMN,angle  45),axis.title.x  element_text(size  15,family  KT),legend.text  element_text(size  11,family  RMN),axis.text.y  element_text(size  11,family  RMN),axis.title.y  element_text(size  13,family  KT),legend.position  bottom)4. 线性回归模型 
# 线性回归模型
lm_df - data.frame(x  iris$Sepal.Length,y  iris$Sepal.Width)
lm_model - lm(data  lm_df,y ~ x)
broom::tidy(lm_model)