# packages (https://statsandr.com/blog/an-efficient-way-to-install-and-load-r-packages/)
packages <- c("rinat", "tidyverse", "leaflet", "htmltools")
installed_packages <- packages %in% rownames(installed.packages())
if (any(installed_packages == FALSE)) {
install.packages(packages[!installed_packages])
} else {
invisible(lapply(packages, library, character.only = TRUE)); rm(packages, installed_packages)
}## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✔ ggplot2 3.3.6 ✔ purrr 0.3.4
## ✔ tibble 3.1.7 ✔ dplyr 1.0.9
## ✔ tidyr 1.2.0 ✔ stringr 1.4.0
## ✔ readr 2.1.2 ✔ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
lente <- get_inat_obs_project("lente-ecologica-biodiversidade-do-norte-fluminense-03ec13fb-b9dc-4175-b47e-09dce7fa5848", type = "info", raw = FALSE)## 237 records
# extrair registros
lente_obs <- get_inat_obs_project(lente$id, type = "observations")## 237 records
## Getting records 0-200
## Getting records up to 400
## Done.
lente_obs %>%
ggplot(aes(x = as.numeric(longitude), y = as.numeric(latitude))) +
# colour = scientific_name)) +
geom_polygon(data = map_data("world"),
aes(x = long, y = lat, group = group),
fill = "grey95",
color = "gray40",
linewidth = 0.1) +
geom_point(size = 0.7, alpha = 0.5) +
coord_fixed(xlim = range(as.numeric(lente_obs$longitude), na.rm = TRUE),
ylim = range(as.numeric(lente_obs$latitude), na.rm = TRUE)) +
theme_classic() +
labs(x = "Longitude", y = "Latitude")## Warning: Ignoring unknown parameters: linewidth
lente_obs %>%
leaflet() %>%
addTiles() %>%
addMarkers(~as.numeric(longitude),
~as.numeric(latitude),
label = ~htmltools::htmlEscape(paste("species=", species_guess, "/", "id=", id)),
popup = ~htmltools::htmlEscape(paste("data=", observed_on)))lente_obs %>%
select(observed_on, quality_grade, species_guess, user_id, quality_grade) %>%
mutate(ano_mes = as.POSIXct(observed_on) %>% zoo::as.yearmon()) %>%
group_by(ano_mes, quality_grade) %>%
summarise(occ = n_distinct(species_guess)) %>%
ggplot(aes(x = ano_mes, y = occ, fill = quality_grade)) +
geom_bar(stat = "identity") +
theme_classic() +
labs(x = "", y = "registros (n)")## `summarise()` has grouped output by 'ano_mes'. You can override using the
## `.groups` argument.
# ordenar
ordem <- lente_obs %>%
select(observed_on, quality_grade, species_guess, user_id, quality_grade) %>%
mutate(ano_mes = as.POSIXct(observed_on) %>% zoo::as.yearmon()) %>%
group_by(user_id) %>%
summarise(occ = n_distinct(species_guess)) %>%
arrange(-occ) %>% pull(user_id)
# grafico
lente_obs %>%
select(observed_on, quality_grade, species_guess, user_id, quality_grade) %>%
mutate(ano_mes = as.POSIXct(observed_on) %>% zoo::as.yearmon()) %>%
group_by(user_id, quality_grade) %>%
summarise(occ = n_distinct(species_guess)) %>%
arrange(-occ) %>%
ggplot(aes(y = occ, x = factor(user_id, levels = ordem), fill = quality_grade)) +
geom_bar(stat = "identity") +
theme_classic() +
theme(axis.text.x = element_text(angle=90, hjust=1, vjust=0.5),
legend.title = element_blank()) +
labs(x = "", y = "registros (n)")## `summarise()` has grouped output by 'user_id'. You can override using the
## `.groups` argument.

Colabore, compartilhe, e cite as fontes!