R语言实践——使用rWCVP映射多样性

news2024/11/26 13:51:33

使用rWCVP映射多样性

    • 加载库
    • 工作流
      • 1. 物种丰富度
      • 2. 特有物种丰富度
      • 3. 特定区域的物种热力图

加载库

library(rWCVP)
library(tidyverse)
library(sf)
library(gt)

工作流

1. 物种丰富度

我们可以使用 wcvp_summary 将所有物种的全球出现数据压缩为每个 WGSRPD 3 级区域的原始计数

这为我们提供了一个列表,信息在前五个槽中,数据在名为 S u m m a r y 的槽中。我们将使用这个 Summary的槽中。我们将使用这个 Summary的槽中。我们将使用这个Summary数据集。

global_summary = wcvp_summary()
glimpse(global_summary)
ℹ No area specified. Generating global summary.           
ℹ No taxon specified. Generating summary of all species.  
Matching ■■■■■■■■■■■■■■■■■■■■■■■■■         80% | ETA:  4s

List of 6
 $ Taxon                               : NULL
 $ Area                                : chr "the world"
 $ Grouping_variable                   : chr "area_code_l3"
 $ Total_number_of_species             : int 347525
 $ Number_of_regionally_endemic_species: int 347527
 $ Summary                             : tibble [368 × 6] (S3: tbl_df/tbl/data.frame)
  ..$ area_code_l3: chr [1:368] "ABT" "AFG" "AGE" "AGS" ...
  ..$ Native      : int [1:368] 1608 4510 5331 2082 5357 2990 3382 198 3506 2578 ...
  ..$ Endemic     : int [1:368] 0 862 241 252 852 30 60 19 178 75 ...
  ..$ Introduced  : int [1:368] 300 101 711 412 404 928 182 48 345 101 ...
  ..$ Extinct     : int [1:368] 0 1 1 2 7 2 2 0 30 0 ...
  ..$ Total       : int [1:368] 1908 4618 6045 2497 5769 3921 3602 246 3934 2680 ...

rWCVPdata 包括 WGSRPD 3 级区域的区域多边形 - 这将成为我们添加内容的基础。让我们将 global_summary 添加到空间数据,并绘制一张地图,其中用物种丰富度定义颜色。

area_polygons = rWCVPdata::wgsrpd3 %>%
  left_join(global_summary$Summary, by=c("LEVEL3_COD"="area_code_l3"))

ggplot(area_polygons)+
  geom_sf(aes(fill=Native))

在这里插入图片描述
嗯,它没有想象中的那么漂亮而且我们丢失了所有的岛屿 - 让我们做一些调整。

(p_native_richness <- ggplot(area_polygons) +
    geom_sf(aes(fill=Native), col="transparent") +
    stat_sf_coordinates(aes(col=Native))+
    theme_void() +
    scale_fill_viridis_c(name = "Native\nspecies")+ 
    scale_colour_viridis_c(name = "Native\nspecies")+ 
    coord_sf(expand=FALSE)
)

在这里插入图片描述

2. 特有物种丰富度

我们还可以结合其他指标——让我们看看每个3级地区特有物种的比例。我们也将使用稍微不同的调色板,只是为了好玩。

area_polygons = area_polygons %>% 
  mutate(percent_endemic = Endemic/Native)

(p_prop_endemic = ggplot(area_polygons) +
    geom_sf(aes(fill=percent_endemic), col="transparent") +
    stat_sf_coordinates(aes(col=percent_endemic))+
    theme_void()+
    scale_fill_distiller(palette="Reds", direction=1, name="% of species\nthat are\nendemic")+ 
    scale_colour_distiller(palette="Reds", direction=1, 
                           name="% of species\nthat are\nendemic")+ 
    coord_sf(expand=FALSE)

在这里插入图片描述
我们可以使用此信息生成前十名的表格

area_polygons %>% 
  left_join(wgsrpd_mapping) %>% 
  slice_max(percent_endemic,n=10) %>% 
  st_drop_geometry() %>% 
  select(LEVEL3_NAM, percent_endemic, LEVEL1_NAM) %>% 
  group_by(LEVEL1_NAM) %>% 
  gt() %>% 
  cols_label(
    percent_endemic = "% Endemic",
    LEVEL3_NAM = "WGSRPD Level 3 Area"
  ) %>% 
  tab_options(
    column_labels.font.weight = "bold",
    row_group.font.weight = "bold",
    row_group.as_column = TRUE,
    data_row.padding = px(1),
    table.font.size = 12,
    table_body.hlines.color = "transparent",
  ) %>%
  fmt_percent(
    columns = percent_endemic,
    decimals = 1
  )

在这里插入图片描述

3. 特定区域的物种热力图

再举一个例子,展示我们如何将地图限制在特定的感兴趣区域。让我们看看非洲的兰花。

orchid_africa_summary = wcvp_summary("Orchidaceae", "family", get_wgsrpd3_codes("Africa"))

在这里插入图片描述

area_polygons = rWCVPdata::wgsrpd3 %>% 
  left_join(orchid_africa_summary$Summary, by=c("LEVEL3_COD"="area_code_l3")) %>% 
  left_join(wgsrpd_mapping) 

我们可以只过滤非洲的多边形,但是从地图的角度来看,保留它们更有意义(尽管是灰色的)。因此,为了约束我们的地图,我们需要设置自定义限制。

bounding_box = st_bbox(area_polygons %>% filter(LEVEL1_NAM =="AFRICA"))

xmin = bounding_box["xmin"] - 2
xmax = bounding_box["xmax"] + 2
ymin = bounding_box["ymin"] - 2
ymax = bounding_box["ymax"] + 2

(p_orchids = ggplot(area_polygons) +
    geom_sf(aes(fill=Native), col="transparent") +
    stat_sf_coordinates(aes(col=Native), size=4)+
    coord_sf(xlim=c(xmin, xmax), ylim=c(ymin, ymax))+
    theme_void()+
    scale_fill_viridis_c(name = "Native\nspecies")+ 
    scale_colour_viridis_c(name = "Native\nspecies")+
    ggtitle("Orchidaceae species richness")

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python三角函数角度的介绍

Python三角函数角度的介绍 Python语言为各种计算提供了强大的支持。而Python在数学领域的支持更是非常强大&#xff0c;包括对三角函数角度的计算。在Python中&#xff0c;支持常用的三角函数&#xff0c;例如sin、cos、tan等。这些函数都需要将角度转换为弧度&#xff0c;并且…

车载网络测试 - CANCANFD - 基础篇_01

目录 问题思考&#xff1a; 一、为什么需要总线? 二、什么是CAN总线? 三、为什么是CAN总线? 四、曾经的车用总线 1、SAEJ1850(Class2) 2、SAEJ1708 3、K-Line 4、BEAN 5、 byteflight, K-Bus 6、D2B 五、当前的车用总线 1、CAN 2、LIN 3、FlexRay 4、MOST 六…

C#中的DataGridView中添加按钮并操作数据

背景&#xff1a;最近在项目中有需求需要在DataGridView中添加“删除”、“修改”按钮&#xff0c;用来对数据的操作以及显示。 在DataGridView中显示需要的按钮 首先在DataGridView中添加需要的列&#xff0c;此列是用来存放按钮的。 然后在代码中“画”按钮。 if (e.Column…

你知道什么叫三目表达式吗

目录 什么是三目表达式&#xff1f; 运用 1.单个使用 2.嵌套使用 什么是三目表达式&#xff1f; 1.三目表达式是一种编程中常见的表达式,它能够有效地帮助我们解决一些问题。 2.三目表达式由三个部分组成,分别是:条件表达式、结果表达式 听不懂么&#xff0c;那我们就来举个…

网页制作-技术学习笔记

PxCook PxCook测量像素工具下载 https://www.fancynode.com.cn/pxcookPxCook基本操作 通过软件打开设计图 打开软件 创建web项目 拖拽入设计图&#xff0c;png用设计模式 psd用开发模式 常用快捷键 放大设计图&#xff1a;ctrl 缩小设计图&#xff1a;ctrl - - 移动…

一、STM32开发环境的搭建(Keil+CubeMX)

1、STM32开发环境所需的东西 (1)KeilMDK安装包。 (2)STM32CubeMX。 (3)Keil软件对应的单片机pack包。 (4)STM32Cube MCU包。 2、Keil简介及安装 略 3、CubeMX简介及安装 3.1、CubeMX简介 (1)STM32CubeMX是一种图形工具&#xff0c;通过分步过程可以非常轻松地配置STM3…

Flutter 可冻结的侧滑表格 sticky-headers-table 结合 NestedScrollView 吸顶悬浮的使用实践

最近在做flutter web的开发&#xff0c;需要做一个类似云文档中表格固定顶部栏和左侧栏的需求&#xff0c;也就是冻结列表的功能 那么在pub上呢也有不少的开源库&#xff0c;比如&#xff1a; table_sticky_headers data_table_2 如果说只是简单的表格和吸顶&#xff0c;那么这…

cf1750E Bracket Cost

前言&#xff1a; 好久没训练了,来做道计数题找找感觉。**期末毁我青春 大意&#xff1a; 定义对于一个括号串 s的值&#xff0c;为通过最小次数以下操作使 s 实现括号匹配的操作次数。 选择一个子串&#xff0c;循环右移一位。在任意一个位置插入一个任意括号。 求一个括…

【Python 变量和数据类型】零基础也能轻松掌握的学习路线与参考资料

一、Python 变量 Python 变量是数据储存的地方&#xff0c;使用变量可以在程序中持续存储数据&#xff0c;Python 中的变量可以储存任何类型的数据&#xff0c;如文本、数字、列表、元组、字典等。下面是 Python 变量学习路线&#xff1a; 1. 了解 Python 变量 Python 变量是…

【Python pygame】零基础也能轻松掌握的学习路线与参考资料

Python pygame是一款专门用于开发游戏和多媒体应用程序的Python库。它可以帮助开发者实现丰富多彩的图形界面和实时动态交互效果。本篇文章将为大家介绍Python pygame的学习路线&#xff0c;包括入门基础、进阶知识以及优秀实践&#xff0c;帮助大家了解Python pygame并掌握其开…

STM32G0x0系列-点亮一盏灯(寄存器)

目录 输入功能 浮空输入:通俗讲就是让管脚什么都不接&#xff0c;悬空着。 上拉输入 下拉输入 模拟输入 输出功能 开漏输出 推挽输出 相关寄存器 GPIOx_MODER 端口模式寄存器 GPIOx_OTYPER 端口输出类型寄存器 GPIOx_ OSPEEDR 端口输出速度寄存器 GPIOx_PUPDR 上拉…

腾讯云服务器使用教程,手把手教你入门

腾讯云服务器使用教程包括注册账号实名认证、选择云服务器CVM或轻量应用服务器CPU内存带宽和系统盘配置、安全设置和云服务器远程连接、安全组端口开通教程、云服务器环境部署以搭建网站为例手把手网站上线&#xff0c;云服务器文件传输和数据备份以及技术支持等详细说明&#…

葵花(Himawari)8/9卫星数据处理

李国春 葵花8&#xff08;含葵花9&#xff0c;下同&#xff09;是静止气象卫星&#xff0c;数据范围是星下点为140E赤道上空的大圆盘。空间分辨率有500m、1km和2km三种。虽然其空间分辨率不高&#xff0c;但是有极高的时间分辨率&#xff0c;观测数据刷新仅10分钟。这对一些生…

数据结构中“树”的全面讲解

文章目录 一、树结构的定义与对比二、树的存储结构是什么&#xff0c;都有哪些存储结构&#xff1f;双亲表示法&#xff1a;孩子表示法&#xff1a;孩子兄弟表示法&#xff1a; 一、树结构的定义与对比 ​ 树结构是一种一对多的非线性结构&#xff0c;它是由n&#xff08;n>…

第1关:ODBC程序设计

第1关&#xff1a;ODBC程序设计 任务描述相关知识ODBC主要功能ODBC接口主要函数ODBC应用程序开发实例DM ODBC应用程序开发总体流程DM ODBC代码编写流程DM ODBC代码编写实例 编程要求测试说明代码参考&#xff1a; 任务描述 本关任务&#xff1a;使用 ODBC 查询表中数据。 相关…

Seata分布式事务实战

目录 1 Seata1.1 Seata术语1.2 Seata AT模式1.2.1 AT模式及工作流程1.2.2 Seata-Server安装1.2.3 集成springcloud-alibaba 1.3 Seata TCC模式 2 Seata注册中心2.1 服务端注册中心配置2.2 客户端注册中心配置 3 Seata高可用 1 Seata Seata实现分布式事务基础知识:https://blog.…

“敏捷”又“精益”的新企架思想,如何指导项目实施?

就像“一千个读者眼中有一千个哈姆雷特”&#xff0c;企业也有一千种被看待的方式&#xff0c;例如消费者会用品牌和产品来描述企业&#xff1b;投资者会用盈利模式和盈利空间来评估企业&#xff0c;而“企业架构”则是企业管理者、架构师等用来精确描述企业的方式。 通过业务…

【C语言】语言篇——程序设计入门

C站的小伙伴们大家好呀&#xff01;我最近在学习刘汝佳老师的《算法竞赛入门经典》&#xff0c;跟着这本书来学习和做习题&#xff0c;在这里和大家一起分享进步。下面是本书的第一部分的语言篇。 语言篇——程序设计入门 算术表达式变量及其输入顺序结构程序设计分支结构程序设…

1.1 什么是eBPF?(上)

大多数介绍eBPF的文章都是用“eBPF是一种革命性的内核技术”来描绘的。这样讲一点也不夸张。因为它允许在Linux的内核中执行沙盒程序,在不改变内核源码或加载内核模块的前提下直接地,安全地,快捷地扩展内核,并改变内核的行为。可以想像在运行时,将用户空间的eBPF程序加载到…

C4D R26 渲染学习笔记 建模篇(2):手动建模

介绍篇 C4D R26 渲染学习笔记&#xff08;1&#xff09;&#xff1a;C4D版本选择和初始UI框介绍 C4D R26 渲染学习笔记&#xff08;2&#xff09;&#xff1a;渲染流程介绍 C4D R26 渲染学习笔记&#xff08;3&#xff09;&#xff1a;物体基本操作快捷键 建模篇 C4D R26 渲…