En el presente Notebook se empleará la librería ggplot
para generar gráficas básicas de la data correspondiente a los
personajes de la película Star Wars, donde mediante comandos de la
librería dplyr se filtrará la data para mejorar el
performance de los objetos visuales.
Es de recordar que la librería tidyverse internamente
posee ggplt y dplyr, por ende solo se
importará tidyverse.
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
starwars <- starwars
#Mostrar data
# view(starwars)
%>%starwars %>%
ggplot(aes(x= height, y= mass) )+
geom_point()+
labs(title = "Comparativa de altura de los personajes de StarWars respecto al peso")
## Warning: Removed 28 rows containing missing values or values outside the scale range
## (`geom_point()`).
Se observa que existen valores Outlier o atípicos, donde
estos dificulta el correcto análisis del dataframe, por ende es
requerido filtrar la data con el comando pipe, para proveer
un mejor visual sin afectar la data original.
Para este caso, nos ayudaremos del comando filter, donde
solo se tomarán los personajes que pesan menos de 200Kg,
starwars %>%
filter(mass < 200) %>%
ggplot(aes(x=height, y= mass))+
geom_point()+
labs(title = "Altura de los personajes StarWars respecto al peso",
subtitle = "data filtrada")+
xlab("Altura personajes Star Wars")+
ylab("Peso personajes Star Wars")
Como se puede observar, al quitar los Outlier o datos
atípicos se puede apreciar de mejor forma la correlación entre las dos
variables estudiadas.
En este apartado se segrega la data por la valeriana genero o en
ingles gender, utilizando el comando color, este parámetro
gráfica con diferente color cada uno de los diferentes valores que posee
dicha variable.
starwars %>%
filter(mass < 200) %>%
ggplot(aes(x= height, y= mass, colour = gender))+
geom_point()+
labs(title = "Altura de los personajes StarWars respecto al peso",
subtitle = "Segregada por genero")+
xlab("Altura personajes Star Wars")+
ylab("Peso personajes Star Wars")
En la anterior gráfica existen valores nulos, este problema se va a
soluciona con el comando filter(!is.na(gender)) el cual
quita los valores nulos
starwars %>%
filter(starwars$mass < 200) %>%
filter(!is.na(gender)) %>%
ggplot(aes(x=height, y=mass, colour = gender ))+
geom_point()+
labs(title = "Altura de los personajes StarWars respecto al peso",
subtitle = "Segregada por genero")+
xlab("Altura personajes Star Wars")+
ylab("Peso personajes Star Wars")
Como se puede apreciar ahora los valores nulos fueron eliminados del objeto visual ayudando con la interpretation de la data
starwars %>%
filter(starwars$mass < 200) %>%
filter(!is.na(gender)) %>%
ggplot(aes(x=height, y=mass, colour = gender ))+
geom_point()+
labs(title = "Altura de los personajes StarWars respecto al peso",
subtitle = "Segregada por genero")+
xlab("Altura personajes Star Wars")+
ylab("Peso personajes Star Wars")+
scale_color_manual( labels=c("female", "male"),
values = c("#5b2c6f", "#FFC300"))
Medianate el comando scale_color_manual se fija
manualmente los colores de las etiquetas
Crear una tabla pivot de la media de la altura de las especies
starwars %>%
group_by(species) %>%
summarise(avg_altura = mean(height, na.rm= TRUE))
## # A tibble: 38 × 2
## species avg_altura
## <chr> <dbl>
## 1 Aleena 79
## 2 Besalisk 198
## 3 Cerean 198
## 4 Chagrian 196
## 5 Clawdite 168
## 6 Droid 131.
## 7 Dug 112
## 8 Ewok 88
## 9 Geonosian 183
## 10 Gungan 209.
## # ℹ 28 more rows
Transformar tabla en objeto visual
starwars %>%
group_by(species) %>%
summarise( avg_altura = mean(height, na.rm= TRUE)) %>%
ggplot(aes(x= species, y = avg_altura))+
geom_col()
En el anterior gráfica no se puede leer el numero de las especies, se
invertiran los ejes.
starwars %>%
group_by(species) %>%
summarise( avg_altura = mean(height, na.rm= TRUE)) %>%
ggplot(aes(y= species, x = avg_altura))+
geom_col()
El gráfico sigue con valores nulos en las especies, a continuación se eliminaran y ordenaran de mayo a menor
starwars %>%
filter(!is.na(species)) %>%
group_by(species) %>%
summarise( avg_altura = mean(height, na.rm= TRUE)) %>%
ggplot(aes(x = avg_altura, y= reorder(species, avg_altura)))+
geom_col()