Nothing
## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
library(peruflorads43)
library(dplyr)
library(tibble)
library(ggplot2)
library(scales)
library(gt)
## -----------------------------------------------------------------------------
threatenedperu <- get_threatened_database(type = "original")
## -----------------------------------------------------------------------------
threatenedperu |>
dplyr::mutate(compara = scientific_name != accepted_name) |>
dplyr::mutate(
# Calcula la distancia solo cuando los nombres difieren
string_distance = ifelse(
compara,
stringdist::stringdist(scientific_name, accepted_name, method = "lv"), # 'lv' = Levenshtein
0
)
) |>
dplyr::filter(string_distance > 0 & string_distance < 3) |>
dplyr::select(scientific_name, accepted_name, string_distance) |>
gt::gt()
## -----------------------------------------------------------------------------
# Nombres aceptados
threatenedperu |>
filter(taxonomic_status == "Accepted") |>
select(scientific_name, accepted_name) |>
slice_head(n = 5)
#Nombres sinónimos
threatenedperu |>
filter(taxonomic_status == "Synonym") |>
select(scientific_name, accepted_name) |>
slice_head(n = 5)
#Casos sin opinión
threatenedperu |>
filter(taxonomic_status == "No opinion") |>
select(scientific_name, accepted_name) |>
slice_head(n = 5)
## -----------------------------------------------------------------------------
status_summary <- threatenedperu |>
count(taxonomic_status) |>
mutate(pct = round(100 * n / sum(n), 1),
label = paste0(pct, "% (", n, ")"))
gt::gt(status_summary)
## ----fig.width=20, fig.height=10, out.width='90%', fig.align='center'---------
ggplot(status_summary, aes(
x = reorder(taxonomic_status, -pct),
y = pct,
fill = taxonomic_status
)) +
geom_col(width = 0.7, show.legend = FALSE) +
geom_text(aes(label = label), vjust = -0.4, size = 10, fontface = "bold") +
scale_fill_manual(
values = c(
"Accepted" = "#4CAF50", # verde para nombres válidos
"Synonym" = "#2196F3", # azul para sinónimos
"No opinion" = "#FFC107" # amarillo para indeterminados
)
) +
labs(
title = "Proporción de nombres por estado taxonómico",
x = "Estatus taxonómico",
y = "Porcentaje (%)"
) +
scale_y_continuous(expand = expansion(mult = c(0, 0.1))) +
theme_bw() +
theme(
plot.title = element_text(size = 28, face = "bold", hjust = 0.5),
axis.title.x = element_text(size = 22, margin = margin(t = 10)),
axis.title.y = element_text(size = 22,margin = margin(r = 10)),
axis.text = element_text(size = 22, color = "black"),
panel.grid.minor = element_blank(),
panel.grid.major.x = element_blank()
)
## -----------------------------------------------------------------------------
category_summary <- threatenedperu |>
count(threat_category, .drop = FALSE) |>
mutate(
threat_category = factor(threat_category, levels = c("CR","EN","VU","NT")),
pct = round(100 * n / sum(n), 1),
label = paste0(n, " (", pct, "%)")
)
gt::gt(category_summary)
## ----fig.width=20, fig.height=10, out.width='90%', fig.align='center'---------
ggplot(category_summary,
aes(x = forcats::fct_reorder(threat_category, n),
y = n,
fill = threat_category)) +
geom_col(width = 0.7, show.legend = FALSE) +
geom_text(aes(label = label), vjust = -0.35, size = 10, fontface = "bold") +
scale_fill_manual(values = c(
"CR" = "#D32F2F",
"EN" = "#F57C00",
"VU" = "#FBC02D",
"NT" = "#388E3C"
)) +
labs(
title = "Distribución de especies por categoría de amenaza (IUCN)",
x = "Categoría IUCN", y = "Número de especies"
) +
scale_y_continuous(expand = expansion(mult = c(0, 0.10))) +
theme_bw() +
theme(
plot.title = element_text(size = 28, face = "bold", hjust = 0.5),
axis.text = element_text(size = 22, color = "black"),
axis.title = element_text(size = 22, color = "black"),
panel.grid.major.x = element_blank()
)
## -----------------------------------------------------------------------------
threatenedperu |>
filter(taxonomic_status == "Synonym") |>
select(scientific_name, accepted_name, accepted_family, threat_category) |>
head(n=20) |>
gt::gt()
## -----------------------------------------------------------------------------
threatenedperu |>
summarise(
total = n(),
iguales = sum(scientific_name == accepted_name, na.rm = TRUE),
porcentaje_iguales = round(100 * iguales / total, 1)
)
## -----------------------------------------------------------------------------
threatenedperu |>
dplyr::count(taxonomic_status) |>
dplyr::mutate(porcentaje = scales::percent(n / sum(n), accuracy = 0.1)) |>
gt::gt()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.