R语言实践——rWCVP生成可发表级别的物种发现记录矩阵

news2024/11/18 21:33:59

rWCVP生成可发表级别的物种发现记录矩阵

  • 介绍
  • 1. 查询一组示例数据
  • 2. 生成和格式化出现矩阵
  • 3. 额外地对国家进行处理

介绍

世界维管植物名录(WCVP)提供了已知的>340,000种维管植物物种的分布数据。该分布数据可用于构建植物物种名录的发现记录矩阵,rWCVP可以提供帮助。

除了 rWCVP 之外,还可以使用 tidyverse 包进行数据操作和绘图,并使用 gt 包来格式化表格。

先做好准备工作

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

在此示例中,使用==管道运算符 (%>%) 和 dplyr语法 ==- 如果不熟悉这些,我建议查看 https://dplyr.tidyverse.org/ 和其中的一些帮助页面。

1. 查询一组示例数据

对于这个例子,我们没有想要检查的特定区域或植物组,但这让我们有机会展示rWCVP中的其他功能之一!

我们想要一组物种,a)不太大,b)分布在几个WGSRPD 3级区域。巴西就是不错的选择,因为它有五个3级区域(对于这个目的来说,这是一个不错的数字,因为该表格将适合纵向页面)。让我们看看是否有一些大小不错的示例属,使用 wcvp_summary 函数:

wcvp_summary(taxon = "Myrtaceae", taxon_rank = "family", area=get_wgsrpd3_codes("Brazil"), grouping_var = "genus")%>%wcvp_summary_gt()

在这里插入图片描述
Calycolpus看起来又漂亮又整齐——让我们看看这 8 个物种是如何分布在 5 个区域的。
我们可以使用相同的函数,但限制我们的分类单元并将我们的分组变量更改为 area。

wcvp_summary(taxon = "Calycolpus", taxon_rank = "genus", area=get_wgsrpd3_codes("Brazil"), grouping_var = "area_code_l3")%>%wcvp_summary_gt()

在这里插入图片描述
嗯,也许有点太小了 - 它只出现在 5 个区域中的 3 个。Myrciaria呢?

wcvp_summary(taxon = "Myrciaria", taxon_rank = "genus", area=get_wgsrpd3_codes("Brazil"), grouping_var = "area_code_l3")%>%wcvp_summary_gt()

在这里插入图片描述

2. 生成和格式化出现矩阵

为该属生成出现矩阵就像使用 generate_occurence_matrix 函数一样简单。

m = wcvp_occ_mat(taxon = "Myrciaria", taxon_rank = "genus", area=get_wgsrpd3_codes("Brazil"))
# A tibble: 23 × 7
   plant_name_id taxon_name             BZC   BZE   BZL   BZN   BZS
           <dbl> <chr>                <dbl> <dbl> <dbl> <dbl> <dbl>
 1        473796 Myrciaria alagoana       0     1     0     0     0
 2        534878 Myrciaria alta           0     0     1     0     0
 3        534776 Myrciaria cambuca        0     1     1     0     0
 4        131799 Myrciaria cordata        0     0     0     1     0
 5        131802 Myrciaria cuspidata      1     1     1     0     1
 6        131803 Myrciaria delicatula     1     0     1     0     1
 7        131806 Myrciaria disticha       0     1     1     0     0
 8        131810 Myrciaria dubia          1     0     0     1     0
 9        491614 Myrciaria evanida        0     0     1     0     0
10        131814 Myrciaria ferruginea     0     1     1     0     0
# ℹ 13 more rows
# ℹ Use `print(n = ...)` to see more rows

没关系,但是我们可以使用 gt 包让它更漂亮。让我们执行以下操作:

  • 删除 WCVP ID 列
  • 将taxon_id更改为“物种”
  • 使物种名称为斜体
  • 加粗列标题
  • 减少文本周围的空间,使字体大小为 12
  • 删除内部边框
  • 将 1 和 0 更改为 X 和空白
m_gt = m %>% 
  select(-plant_name_id) %>%
  gt() %>%
  cols_label(
    taxon_name = "Species"
  ) %>%
  tab_style(
    style = cell_text(style = "italic"),
    locations = cells_body(columns = taxon_name)
  ) %>%
  tab_options(
    column_labels.font.weight = "bold",
    data_row.padding = px(1),
    table.font.size = 12,
    table_body.hlines.color = "transparent",
  ) %>%
  text_transform(
    locations = cells_body(),
    fn = function(x) {
      ifelse(x==0, "", x)
    }
  ) %>%
  text_transform(
    locations = cells_body(),
    fn = function(x){
      ifelse(x==1, "X", x)
    }
  )

m_gt

在这里插入图片描述
好多了!我们可以将此 gt 表另存为 HTML 表或图片。如果我们打算再制作几个表格,我们可以通过将表格样式保存为主题来节省空间(有关更多详细信息,请参阅 https://themockup.blog/posts/2020-09-26-functions-and-themes-for-gt-tables/)

occ_mat_theme <- function(x){
  x %>% cols_label(
    taxon_name = "Species"
  ) %>% 
  #make species names italic
        tab_style(
        style=cell_text(style="italic"),
        locations = cells_body(
          columns= taxon_name
        )
      ) %>% 
  tab_options(
    # some nice formatting
        column_labels.font.weight = "bold",
        data_row.padding = px(1),
        table.font.size = 12,
        table_body.hlines.color = "transparent",
        ) %>%
  # change the zeroes into blanks
      text_transform(
        locations = cells_body(),
        fn = function(x){
          ifelse(x == 0, "", x)
        }
      ) %>% 
  # change the 1s into X
        text_transform(
        locations = cells_body(),
        fn = function(x){
          ifelse(x == 1, "X", x)
        }
      )
}

gt() 的最大问题是它不支持 Word - 要直接导出到 docx 文件,请查看 flextable 。包括或排除发生类型 如果我们只想知道本地或引进物种怎么办?此函数可以选择筛选其中一个。巴西Myrciaria在这方面看起来不是很有趣(我们可以从汇总表中看到只引入了一个物种),所以让我们看看一个更具入侵性的群体 - 北欧的Poa(2级区域)。

wcvp_summary(taxon = "Poa", taxon_rank = "genus", area=get_wgsrpd3_codes("Northern Europe"), grouping_var = "area_code_l3") %>% wcvp_summary_gt()

在这里插入图片描述
还有一些工作要做。首先,让我们只看本地物种:

p = wcvp_occ_mat(taxon = "Poa", taxon_rank = "genus", area=get_wgsrpd3_codes("Northern Europe"), introduced = FALSE, extinct = FALSE, location_doubtful = FALSE)
p
# A tibble: 20 × 11
   plant_name_id taxon_name        DEN   FIN   FOR   GRB   ICE   IRE
           <dbl> <chr>           <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1        435004 Poa abbreviata      0     0     0     0     0     0
 2        435078 Poa alpigena        0     1     1     0     1     0
 3        435085 Poa alpina          0     1     1     1     1     1
 4        435167 Poa angustifol…     1     1     0     1     0     0
 5        435194 Poa annua           1     1     1     1     1     1
 6        435235 Poa arctica         0     1     0     0     0     0
 7        435458 Poa bulbosa         1     1     0     1     0     0
 8        435622 Poa compressa       1     1     0     0     0     0
 9        435932 Poa flexuosa        0     0     0     1     1     0
10        435996 Poa glauca          0     1     1     1     1     0
11        436089 Poa hartzii         0     0     0     0     0     0
12        436146 Poa humilis         1     1     1     1     1     1
13        436189 Poa infirma         0     0     0     1     0     0
14        436383 Poa lindebergii     0     1     0     0     0     0
15        436600 Poa nemoralis       1     1     1     1     1     1
16        436739 Poa palustris       1     1     0     1     0     0
17        436906 Poa pratensis       1     1     1     1     1     1
18        437092 Poa remota          1     1     0     0     0     0
19        437424 Poa supina          1     1     0     0     0     0
20        437547 Poa trivialis       1     1     1     1     1     1
# ℹ 3 more variables: NOR <dbl>, SVA <dbl>, SWE <dbl>

我们可以像上面一样格式化这个矩阵,但让我们跳过那些步骤,直接处理引入的物种。我们正在做与以前相同的格式设置,但也添加一个标题 - html 函数可以将我们的属名和所有内容斜体化!

p = wcvp_occ_mat(taxon = "Poa", taxon_rank = "genus", area=get_wgsrpd3_codes("Northern Europe"),native = FALSE, introduced = TRUE, extinct = FALSE, location_doubtful = FALSE)
p %>% 
  select(-plant_name_id) %>% #remove ID col
  gt() %>% 
  occ_mat_theme() %>%  #the theme we defined above
  #add a header
  tab_header(title=html("Introduced <em>Poa</em> species in Northern Europe")) 

在这里插入图片描述

3. 额外地对国家进行处理

使用 gt 创建的表非常灵活 - 假设我们想查看美加边境出现的记录:

f = wcvp_occ_mat("Fritillaria", "genus", area=c("WAS","ORE","IDA","MNT","ABT","BRC"))
f_gt = f %>%
  select(-plant_name_id) %>%
  gt() %>%
  occ_mat_theme() %>%
  tab_header(title = html("<em>Fritillaria</em> species in Northwest USA and Southwest Canada"))
f_gt

在这里插入图片描述
了解哪些代码在美国,哪些在加拿大非常有用。我们可以使用 rWCVP 中包含的数据来创建检索表。

wgsrpd_mapping %>%
  filter(LEVEL3_COD %in% c("WAS","ORE","IDA","MNT","ABT","BRC")) %>%
  select(LEVEL3_NAM, LEVEL3_COD, COUNTRY) %>%
  gt() %>%
  tab_options(
    column_labels.font.weight = "bold",
    data_row.padding = px(1),
    table.font.size = 12,
    table_body.hlines.color = "transparent",
  )

在这里插入图片描述
不过,将其放在发生矩阵上确实会更好。输入 tab_spanner():

f_gt %>%
  tab_spanner(label = "United States", columns = c(IDA, MNT, ORE, WAS)) %>%
  tab_spanner(label = "Canada", columns = c(ABT, BRC))

在这里插入图片描述
gt 还有很多事情可以做 - 请参阅 https://gt.rstudio.com/ 以获取帮助、示例和文档。

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

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

相关文章

解密报错-java.security.InvalidKeyException: Illegal key size(本机解密正常,服务器解密报错)

记录在对接微信接口时需要的问题&#xff0c;对微信消息进行解密时报错&#xff0c;在本地进行解密是正常的&#xff0c;但部署到服务器进行解密就会报错 报错信息 java.security.InvalidKeyException: Illegal key sizeat javax.crypto.Cipher.checkCryptoPerm(Cipher.java:…

windows 系统扩容C盘注意事项

windows系统大家都不陌生&#xff0c;是大家用的最多的操作系统。在实际的使用中&#xff0c;遇到需要扩容C盘的情况不是很多&#xff0c;但是如果遇到了&#xff0c;有以下几个事项需要大家注意&#xff1a; 剩余空间是否充足 不论当前服务器是物理服务器还是虚拟机&#xff…

Slack工作区SolidUI 集成Claude使用流程,替代GPT3.5

背景 Claude 由 OpenAI 副总裁离职创立的和chatGPT对位的AI机器人&#xff0c;号称是chatGPT一生的对手&#xff01; 比之前的一些模型如GPT-3 要强大得多&#xff0c;因此Claude 被认为是ChatGPT 最有力的竞争对手。Claude 的研发公司是专注人工智能安全和研究的初创公司Anth…

谷歌Bard_VS_Baize-7B_VS_文心一言体验对比

2023年4月4日&#xff0c;来自加州大学圣迭戈分校、中山大学和微软亚研的研究者提出了Baize&#xff0c;该模型是让ChatGPT 自我对话&#xff0c;批量生成高质量多轮对话数据集&#xff0c;利用该数据集对LLaMA进行微调得到的&#xff08;目前版本还没有RLHF&#xff09; 关于B…

使用Dockerfile搭建rtthread 瑞萨开发环境

文章目录 1. 装docker2. 拉代码3. 构建镜像4. 启动容器5. vscode打开并编译6. 程序下载 整体分为6步 安装docker拉取rtthread_瑞萨仓库代码使用仓库中的dockerfile构建一个镜像使用构建好的镜像启动一个容器使用vscode打开并编译代码下载程序 1. 装docker Docker的安装方式可…

vue自动更新版本号

在项目中创建buildTime.js //npm run build打包前执行此段代码 let fs require(fs); //返回package的json数据 function getPackageJson() { let data fs.readFileSync(./package.json);//fs读取文件 return JSON.parse(data);//转换为json对象 } let packageData getPackag…

FreeRTOS_中断配置和临界段

目录 1. Cortex-M 中断 1.1 中断简介 1.2 中断管理简介 1.3 优先级分组定义 1.4 优先级设置 1.5 用于中断屏蔽的特殊寄存器 1.5.1 PRIMASK 和 FAULTMASK 寄存器 1.5.2 BASEPRI 寄存器 2. FreeRTOS 中断配置宏 2.1 configPRIO_BITS 2.2 configLIBRARY_LOWEST_INTERRU…

IOC(控制反转)

目录 理解IOC 理解IOC容器 Spring IOC IOC优点 什么是依赖注入DI DI是如何实现的呢&#xff1f; 总结 : IOC实现的基本过程 容器如何放入Bean对象? IOC实现的基本过程 IoC容器在Spring的实现 理解IOC IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反…

容器部署 redis 哨兵集群 【问题笔记】

目录 1.哨兵模式 &#xff08;sentinel&#xff09; 启动时报错&#xff1a;Cant resolve instance hostnames 2.哨兵模式下 master 节点崩掉后无法切换从节点为master节点 1.哨兵模式 &#xff08;sentinel&#xff09; 启动时报错&#xff1a;Cant resolve instance hostna…

Axure教程—单色折线图(中继器)

本文将教大家如何用AXURE中的中继器制作单色折线图 一、效果介绍 如图&#xff1a; 预览地址&#xff1a;https://d84rfm.axshare.com 下载地址&#xff1a;https://download.csdn.net/download/weixin_43516258/87814278 二、功能介绍 简单填写中继器内容即可动态显示值样…

Call for Papers丨第十一届全国社会媒体处理大会,AI Open设独立专刊投稿渠道

全国社会媒体处理大会&#xff08;SMP&#xff09;专注于以社会媒体处理为主题的科学研究&#xff0c;为传播社会媒体处理最新的学术研究与技术成果提供广泛的交流平台&#xff0c;旨在构建社会媒体处理领域的产学研生态圈&#xff0c;成为中国乃至世界社会媒体处理的风向标。 …

2023年了PWA开发模式在国内还有发展空间吗?

随着国内外技术及生态的迅猛发展&#xff0c;应用程序的开发模式也在不断演进。在过去&#xff0c;就我及身边同事的经验而言&#xff0c;会常常需要在不同的平台&#xff08;如Android、iOS&#xff09;编写不同的代码&#xff0c;导致开发成本和维护困难的问题。 然而&#…

WBS项目分解的7大基本原则

制定和分解WBS&#xff0c;需要遵循的基本原则&#xff1a; 1、唯一性 每一项工作任务在WBS中是唯一的。 WBS项目分解的7大基本原则 2、负责制 每一项任务都需要明确责任人&#xff0c;一人负责&#xff0c;其他人参与。 3、可测量性 每一项任务都应该是可以量化和测量的&#…

5月份招了个00后测试堪称卷王之王,让人崩溃...

前段时间公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司干了三年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍&am…

非流式语音合成和流式语音合成

语音合成技术&#xff1a;https://zhuanlan.zhihu.com/p/113282101 流式语音合成技术揭秘与实践 1、非流式语音合成&#xff0c;一次性输入文字&#xff0c;一次性输出语音&#xff0c;注重语音合成系统的 整体运算速度 &#xff0c;不适合做语音交互&#xff1b;流式语音合成…

如何在 Linux Mint 21 上安装 VirtualBox 7?

VirtualBox 是一款开源的虚拟化软件&#xff0c;它可以让你在一台计算机上同时运行多个操作系统。本文将详细介绍如何在 Linux Mint 21 上安装 VirtualBox 7。以下是安装过程的详细步骤&#xff1a; 步骤一&#xff1a;下载 VirtualBox 7 首先&#xff0c;你需要下载 VirtualB…

姜春宇:数据治理五大发展趋势

4月27日在2023数据治理新实践峰会上&#xff0c;大数据技术标准推进委员会副主席姜春宇先生以《数据治理发展趋势》为主题为大家分享了数据的价值和最新发展趋势。 以下为姜春宇先生的演讲实录&#xff0c;为了方便阅读&#xff0c;小编做了一些字句修改和文本优化。 大家上午…

如何在 OpenSUSE 上安装 VirtualBox 7?

VirtualBox 是一款开源的虚拟化软件&#xff0c;允许用户在单个计算机上运行多个操作系统。本文将详细介绍如何在 OpenSUSE 上安装 VirtualBox 7。以下是安装过程的步骤&#xff1a; 步骤一&#xff1a;下载 VirtualBox 7 首先&#xff0c;我们需要下载 VirtualBox 7 的安装包…

从火灾演习中认识火灾以及火灾发生时如何确保消防设备的正常运行

安科瑞虞佳豪 火光、浓烟、热浪……5月10日&#xff0c;在宁波高新区光华路119号一座废弃厂房内&#xff0c;一场特殊的“火灾”正在发生&#xff01; 据悉&#xff0c;宁波市消防部门组织开展了一场真人真火的火灾实验。目的是为了让人们直观感受火灾的危险&#xff0c;进一…

vcruntime140_1.dll丢失怎样修复,推荐4个vcruntime140_1.dll丢失的修复方法

vcruntime140_1.dll文件是Microsoft Visual C Redistributable for Visual Studio 2015运行库的一部分&#xff0c;它是一个用于支持Visual C构建的应用程序的系统文件。这个文件包含了在运行C程序时所需要的函数和类库&#xff0c;主要负责向应用程序提供运行时环境。如果电脑…