Práctica del lenguaje R: uso de rWCVP para mapear la diversidad

cargar biblioteca

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

flujo de trabajo

1. Riqueza de especies

Podemos comprimir los datos de ocurrencia global para todas las especies en recuentos sin procesar para cada región de nivel 3 de WGSRPD usando wcvp_summary

Esto nos da una lista con información en los primeros cinco espacios y datos en un espacio llamado Resumen. Usaremos esto en la ranura Resumen. usaremos estoGroove del resumen ._ _ Usaremos este conjunto de datos de Resumen.

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 incluye polígonos de área para áreas de nivel 3 de WGSRPD: esta será la base para nuestras adiciones. Agreguemos un resumen_global a los datos espaciales y dibujemos un mapa donde los colores estén definidos por la riqueza de especies.

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

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

inserte la descripción de la imagen aquí
Bueno, no es tan bonito como esperábamos y perdimos todas las islas. Hagamos algunos ajustes.

(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)
)

inserte la descripción de la imagen aquí

2. Riqueza de especies endémicas

También podemos combinar otros indicadores: veamos la proporción de especies endémicas de cada área de Nivel 3. También usaremos una paleta ligeramente diferente, solo por diversión.

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)

inserte la descripción de la imagen aquí
Podemos usar esta información para generar una tabla de los diez primeros

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
  )

inserte la descripción de la imagen aquí

3. Mapa de calor de especies en regiones específicas

Aquí hay otro ejemplo que muestra cómo podemos restringir el mapa a un área específica de interés. Miremos las orquídeas en África.

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

inserte la descripción de la imagen aquí

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

Podríamos simplemente filtrar los polígonos de África, pero desde la perspectiva del mapa tiene más sentido (aunque en gris) mantenerlos. Entonces, para restringir nuestro mapa, debemos establecer límites personalizados.

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")

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/whitedrogen/article/details/130873407
Recomendado
Clasificación