Los datos que se presentan a continuación, van de acuerdo con los filtros seleccionados en el sidebar
---
title: "Palmer Penguins Dashboard"
author: "Fernanda R. / Eriana-129"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
source_code: embed
theme: spacelab
---
```{r setup, include=FALSE}
# Cargar paquetes
library(flexdashboard)
library(palmerpenguins)
library(tidyverse)
library(plotly)
library(crosstalk)
library(ggthemes)
# Cargar palmerpenguins
data1 <- penguins %>%
filter(!is.na(bill_length_mm) & !is.na(body_mass_g)) %>% #sin NA
mutate(fuente = as.factor("Data1"))%>% #agrega columna de la fuente
mutate(Index = row_number())%>% #crear nrow
arrange(Index)%>%
select(10,1:9) #reordenar
data2 <- penguins %>%
filter(!is.na(bill_length_mm) & !is.na(body_mass_g)) %>% #sin NA
mutate(fuente = as.factor("Data2"))%>% #agrega columna de la fuente
mutate(body_mass_g = body_mass_g + 50)%>%
mutate(bill_length_mm = bill_length_mm + 50)%>%
mutate(Index = row_number())%>% #crear nrow
arrange(Index)%>%
select(10,1:9) #reordenar
data2 <- data2 %>%
mutate(island = as.factor(case_when( # nombre viejo = nombre nuevo
island == "Biscoe" ~ "Alce",
island == "Dream" ~ "Lobo",
island == "Torgersen" ~ "Venado",
TRUE ~ island # Mantiene los valores que no coincidan
)))
data2 <- data2 %>%
mutate(species = as.factor(case_when( # nombre viejo = nombre nuevo
species == "Adelie" ~ "Manzana",
species == "Chinstrap" ~ "Nuez",
species == "Gentoo" ~ "Pera",
TRUE ~ species # Mantiene los valores que no coincidan
)))
data_combined <- bind_rows(data1, data2)
shared_data <- SharedData$new(data_combined)
```
# {.sidebar}
Código adaptado de: <a href="https://github.com/fjodor/exploring-plotly/tree/main" target="_blank">Wolf Riepl</a>
Visita mi perfil de GitHub :D <a href="https://github.com/Eriana-129">Fer R. / Eriana-129</a>
```{r}
# Checkbox para seleccionar especies
filter_select(
id = "genero",
label = "Género:",
sharedData = shared_data,
group = ~sex
)
filter_checkbox(
id = "especies1",
label = "Selecciona las especies/frutas:",
sharedData = shared_data,
group = ~species
)
```
{.lightbox width="80%"} <br> [Artwork by @allison_horst]{style="font-size: 1rem; color: gray; font-style: italic;"}
# Gráfica
```{r}
# Crear el gráfico con una sola capa
p <- shared_data %>%
plot_ly(
x = ~body_mass_g,
y = ~bill_length_mm,
color = ~species,
symbol = ~fuente, # Diferenciar con símbolos
hoverinfo = "text",
name = ~species,
text = ~paste("Index:", Index,
"<br>Especie:", species,
"<br>Isla:", island,
"<br>Masa corporal (g):", body_mass_g,
"<br>Longitud del pico (mm):", bill_length_mm)
) %>%
layout(
xaxis = list(title = "Masa corporal (g)"),
yaxis = list(title = "Longitud del pico (mm)"),
legend = list(font = list(size = 16))
)
# Mostrar el gráfico
p
```
# Datos
Los datos que se presentan a continuación, van de acuerdo con los filtros seleccionados en el sidebar
```{css, echo = FALSE}
.chart-wrapper .chart-stage {
overflow: visible; /*evita que los botones de paginacion se corten
}
```
```{r}
DT::datatable(
shared_data,
fillContainer = FALSE, #evita que los botones de paginacion se corten
filter = 'top',
rownames = FALSE,
options = list(
lengthMenu = c(5, 10, 25, 50, 100),
scrollX = TRUE,
autoWidth = TRUE,
columnDefs = list(
list(targets = 0, searchable = FALSE)) # Desactivar el filtro en la primera columna
)
)
```