āEl grĆ”fico simple ha aportado mĆ”s información a la mente del analista de datos que cualquier otro dispositivoā. ā John Tukey
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.1 ā tibble 3.2.1
## ā lubridate 1.9.3 ā tidyr 1.3.1
## ā purrr 1.0.2
## āā 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
library(palmerpenguins)
library(ggthemes)
ĀæLos pingüinos con aletas mĆ”s largas pesan mĆ”s o menos que los pingüinos con aletas mĆ”s cortas? Probablemente ya tengas una respuesta, pero intenta que sea precisa. ĀæCómo es la relación entre la longitud de las aletas y la masa corporal? ĀæEs positiva? ĀæNegativa? ĀæLineal? ĀæNo lineal? ĀæLa relación varĆa segĆŗn la especie de pingüino? ĀæY segĆŗn la isla en la que vive el pingüino? Creemos visualizaciones que podamos usar para responder estas preguntas.
Para facilitar la discusión, definamos algunos términos:
Una variable es una cantidad, cualidad o propiedad que se puede medir.
Un valor es el estado de una variable cuando se mide. El valor de una variable puede cambiar de una medición a otra.
Una observación es un conjunto de mediciones realizadas en condiciones similares (normalmente, todas las mediciones de una observación se realizan al mismo tiempo y sobre el mismo objeto). Una observación contendrÔ varios valores, cada uno asociado a una variable diferente. A veces nos referiremos a una observación como un punto de datos.
Los datos tabulares son un conjunto de valores, cada uno asociado a una variable y una observación. Los datos tabulares estĆ”n ordenados si cada valor se coloca en su propia āceldaā, cada variable en su propia columna y cada observación en su propia fila.
penguins
Este marco de datos contiene 8 columnas. Para obtener una vista alternativa, donde puede ver todas las variables y las primeras observaciones de cada variable, utilice glimpse(). O bien, si estĆ” en RStudio, ejecute View(penguins)para abrir un visor de datos interactivo.
Entre las variables de penguins se encuentran:
species:una especie de pingüino (Adelia, barbijo o papúa).
flipper_length_mm:longitud de la aleta de un pingüino, en milĆmetros.
body_mass_g:masa corporal de un pingüino, en gramos.
Vamos a recrear esta trama paso a paso.
ggplot(
data = penguins
)
ggplot(
data = penguins,
mapping = aes(x = flipper_length_mm, y = body_mass_g)
)
ggplot(
data = penguins,
mapping = aes(x = flipper_length_mm, y = body_mass_g)
) +
geom_point()
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_point()`).
Ahora tenemos algo que se parece a lo que podrĆamos considerar un ādiagrama de dispersiónā. TodavĆa no coincide con nuestro grĆ”fico de āobjetivo finalā, pero al utilizar este grĆ”fico podemos empezar a responder la pregunta que motivó nuestra exploración: āĀæCómo es la relación entre la longitud de la aleta y la masa corporal?ā La relación parece ser positiva (a medida que aumenta la longitud de la aleta, tambiĆ©n lo hace la masa corporal), bastante lineal (los puntos se agrupan alrededor de una lĆnea en lugar de una curva) y moderadamente fuerte (no hay demasiada dispersión alrededor de dicha lĆnea). Los pingüinos con aletas mĆ”s largas son generalmente mĆ”s grandes en tĆ©rminos de su masa corporal.
ggplot(
data = penguins,
mapping = aes(x = flipper_length_mm, y = body_mass_g, color = species)
) +
geom_point()
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_point()`).
Cuando una variable categórica se asigna a una estética, ggplot2
asignarÔ automÔticamente un valor único de la estética (aquà un color
Ćŗnico) a cada nivel Ćŗnico de la variable (cada una de las tres
especies), un proceso conocido como escalamiento . ggplot2 tambiƩn
agregarƔ una leyenda que explica quƩ valores corresponden a quƩ
niveles.
ggplot(
data = penguins,
mapping = aes(x = flipper_length_mm, y = body_mass_g, color = species)
) +
geom_point() +
geom_smooth()
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
## Warning: Removed 2 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_point()`).
## Regresión lineal por minimos cuadrados para cada especie
ggplot(
data = penguins,
mapping = aes(x = flipper_length_mm, y = body_mass_g, color = species)
) +
geom_point() +
geom_smooth(method = "lm")
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 2 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_point()`).
ggplot(
data = penguins,
mapping = aes(x = flipper_length_mm, y = body_mass_g)
) +
geom_point(mapping = aes(color = species)) +
geom_smooth(method = "lm")
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 2 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_point()`).
library(readr)
housing <- read_csv("housing.csv")
## Rows: 20640 Columns: 10
## āā Column specification āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
## Delimiter: ","
## chr (1): ocean_proximity
## dbl (9): longitude, latitude, housing_median_age, total_rooms, total_bedroom...
##
## ā¹ Use `spec()` to retrieve the full column specification for this data.
## ā¹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
names(housing)
## [1] "longitude" "latitude" "housing_median_age"
## [4] "total_rooms" "total_bedrooms" "population"
## [7] "households" "median_income" "median_house_value"
## [10] "ocean_proximity"
ggplot(
data = housing,
mapping = aes(x = longitude, y = latitude)
) +
geom_point()
ggplot(
data = housing,
mapping = aes(x = longitude, y = latitude, colour = ocean_proximity)
) +
geom_point()
ggplot(
data = housing,
mapping = aes(x = median_income, y = median_house_value)
) +
geom_point()
ggplot(
data = housing,
mapping = aes(x = median_income, y = median_house_value, colour = ocean_proximity)
) +
geom_point()
ggplot(
data = housing,
mapping = aes(x = median_income, y = median_house_value, colour = ocean_proximity)
) +
geom_point() +
geom_smooth(method = "lm")
## `geom_smooth()` using formula = 'y ~ x'
# Crear el grƔfico
ggplot(housing, aes(x = longitude, y = latitude)) +
geom_point(aes(color = median_house_value), size = 2) + # Representa los precios medianos de las casas con el color
scale_color_gradient(low = "blue", high = "red", name = "Precio Medio") + # Define el gradiente de color
labs(title = "Distribución de Precios de Casas",
x = "Longitud",
y = "Latitud") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5)) # Centra el tĆtulo
## Visualizar de manera interactiva los precios de las casas en el
mapa
# Cargar librerĆas
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
# Crear el grƔfico con ggplot2
gg <- ggplot(housing, aes(x = longitude, y = latitude)) +
geom_point(aes(color = median_house_value, text = paste("Precio Medio:", median_house_value)), size = 2) +
scale_color_gradient(low = "blue", high = "red", name = "Precio Medio") +
labs(title = "Distribución de Precios de Casas",
x = "Longitud",
y = "Latitud") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
## Warning in geom_point(aes(color = median_house_value, text = paste("Precio
## Medio:", : Ignoring unknown aesthetics: text
# Convertir el grƔfico con plotly para interactividad
ggplotly(gg, tooltip = "text")