ggplot2

ggplot2 es un paquete en R diseñado para la creación de gráficos de datos de manera eficiente y flexible. Se basa en la gramática de gráficos, una teoría que describe los componentes de un gráfico (datos, estética, geometría, etc.) y cómo se combinan para crear visualizaciones complejas. Aquí tienes una explicación básica de cómo funciona ggplot2 en R.

Instalación y Carga

Primero, necesitas instalar y cargar el paquete ggplot2 si no lo tienes ya instalado:

#install.packages("ggplot2")
library(ggplot2)

#install.packages("plotly")
library(plotly) #Biblioteca de gráficos interactivos
## 
## Adjuntando el paquete: '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

Componentes Básicos de ggplot2

  1. Datos (data): El conjunto de datos que deseas graficar.
  2. Aesthetics (aes): Mapeos de variables de los datos a características visuales (e.g., x, y, color, tamaño).
  3. Geometría (geom): El tipo de gráfico o geometría a usar (e.g., puntos, líneas, barras).
  4. Facetas (facets): División de los datos en subgráficos basados en una o más variables.
  5. Estadísticas (stat): Transformaciones estadísticas de los datos.
  6. Coordenadas (coord): Sistema de coordenadas para el gráfico.
  7. Temas (theme): Personalización de la apariencia del gráfico.

Dataset

La base de datos mtcars es un conjunto de datos incorporado en R que contiene información sobre diferentes automóviles. Este conjunto de datos se originó en la revista Motor Trend de 1974 y proporciona datos sobre 32 automóviles de 1973-74. Es un conjunto de datos muy utilizado para demostraciones y ejemplos de análisis de datos en R.

  1. mpg: Miles per gallon (Millas por galón)
  2. cyl: Number of cylinders (Número de cilindros)
  3. disp: Displacement (cu.in.) (Desplazamiento en pulgadas cúbicas)
  4. hp: Gross horsepower (Caballos de fuerza brutos)
  5. drat: Rear axle ratio (Relación del eje trasero)
  6. wt: Weight (1000 lbs) (Peso en miles de libras)
  7. qsec: 1/4 mile time (Tiempo en un cuarto de milla en segundos)
  8. vs: Engine (0 = V-shaped, 1 = straight) (Tipo de motor: 0 = en V, 1 = en línea)
  9. am: Transmission (0 = automatic, 1 = manual) (Transmisión: 0 = automática, 1 = manual)
  10. gear: Number of forward gears (Número de marchas)
  11. carb: Number of carburetors (Número de carburadores)

Creando un Gráfico Básico

Definir los Datos, Aesthetics y Geometría

Supongamos que tienes un conjunto de datos mtcars y deseas crear un gráfico de dispersión de mpg vs wt (millas por galón vs peso del automóvil):

# Cargar el conjunto de datos mtcars
data(mtcars)

# Crear un gráfico de dispersión básico
ggplot(data = mtcars, aes(x = wt, y = mpg)) + geom_point()

Personalización

Puedes agregar más capas y personalizar el gráfico:

ggplot(data = mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "blue", size = 3) +            # Cambiar color y tamaño de los puntos
  labs(title = "Peso vs. Consumo de Combustible",  # Título del gráfico
       x = "Peso (1000 lbs)",                      # Etiqueta del eje x
       y = "Millas por Galón")                     # Etiqueta del eje y

Facetado

Para dividir el gráfico en subgráficos basados en una variable, usa facet_wrap o facet_grid:

ggplot(data = mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  facet_wrap(~ cyl)  # Crear subgráficos por número de cilindros

Temas

Puedes ajustar la apariencia del gráfico utilizando theme:

ggplot(data = mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  theme_minimal()  # Usar un tema minimalista

Ejercicio completo

g<-ggplot(data = mtcars, aes(x = wt, y = mpg)) +
  geom_point(aes(color = factor(cyl)), size = 3) +  # Color por número de cilindros
  labs(title = "Peso vs. Consumo de Combustible",
       x = "Peso (1000 lbs)",
       y = "Millas por Galón",
       color = "Cilindros") +                      # Leyenda de colores
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))    # Centrar el título

Gráfico interactivo

interactive_plot <- ggplotly(g)
interactive_plot