ggplot permite generar gráficos 2D basados en capas, que se pueden adicionar en infinitas combinaciones, empoderando al científico para que pueda realizar gráficos imposibles para otros programas tradicionales
3 elementos básicos
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.5.3
ggplot(mtcars, aes(x = hp, y = mpg)) +
geom_point()
Forma tidyverse
tidyverse es una colección de paquetes R diseñados para la ciencia de datos. Todos los paquetes comparten una filosofía de diseño, gramática y estructuras de datos subyacentes.
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.5.3
## Warning: package 'tibble' was built under R version 3.5.3
## Warning: package 'tidyr' was built under R version 3.5.3
## Warning: package 'readr' was built under R version 3.5.3
## Warning: package 'purrr' was built under R version 3.5.3
## Warning: package 'dplyr' was built under R version 3.5.3
## Warning: package 'stringr' was built under R version 3.5.3
## Warning: package 'forcats' was built under R version 3.5.3
mtcars %>%
ggplot(aes(x = hp, y = mpg)) +
geom_point()
Histograma de frecuencia
ggplot(mtcars, aes(x = mpg)) +
geom_histogram(binwidth = 0.5)
Gráfico de densidad
ggplot(mtcars, aes(x = mpg)) +
geom_density()
Gráfico de puntos
ggplot(mtcars, aes(x = mpg)) +
geom_dotplot()
## `stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.
Polígono de frecuencia
ggplot(mtcars, aes(x = mpg)) +
geom_freqpoly()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Gráfico de barras
ggplot(mtcars, aes(x = factor(gear))) +
geom_bar(width=0.5, colour="blue", fill="red")
Gráfico de dispersión o puntos bivariados
ggplot(mtcars, aes(x = mpg, y = hp)) +
geom_point()
Gráfico de Alfombra, manta, tapete (rug)
ggplot(mtcars, aes(x = mpg, y = hp)) +
geom_rug()
Gráfico de barras con geom_col
ggplot(mtcars, aes(x = factor(gear), y = mpg)) +
geom_col()
Gráfico de caja o de bigotes
ggplot(mtcars, aes(x = factor(gear), y = mpg)) +
geom_boxplot()
Gráfico de violin
ggplot(mtcars, aes(x = factor(gear), y = mpg)) +
geom_violin()
Gráfico de dispersión o puntos bivariados
datos <- mtcars %>%
mutate_at(vars(c("cyl", "vs", "am", "gear", "carb")), factor)
ggplot(datos, aes(x = mpg, y = hp, col = gear, label = hp)) +
geom_point() +
geom_text(vjust = 1.5)
Gráfico de barras con geom_col
ggplot(datos, aes(x = gear, y = mpg, fill = cyl)) +
geom_col()
Gráfico de barras con geom_bar
ggplot(datos, aes(x = gear, fill = cyl)) +
geom_bar(position="dodge")
Gráfico de caja o de bigotes
ggplot(datos, aes(x = factor(gear), y = mpg, fill = gear)) +
geom_boxplot(fill = "white") +
geom_violin(alpha = 0.5)
Gráficos que considran una variable continua
Gráfico de densidad
ggplot(datos, aes(x = mpg, fill = gear)) +
geom_density(alpha = 0.3)
## Gráfico Inicial
datos %>%
ggplot(aes(x = gear, y = mpg)) +
geom_point() +
geom_boxplot()
Gráfico de Caja con puntos sobrexpuestos
datos %>%
ggplot(aes(x = gear, y = mpg)) +
geom_boxplot() +
geom_point()
Gráfico de Puntos con Caja transparente sobrexpuesta
datos %>%
ggplot(aes(x = gear, y = mpg)) +
geom_point() +
geom_boxplot(alpha = 0.3)
Gráfico de Caja con puntos sobrexpuestos y línea de media de mpg
# Cálculo de la media de mpg
media <- mean(datos$mpg)
datos %>%
ggplot(aes(x = gear, y = mpg)) +
geom_boxplot() +
geom_point() +
geom_hline(yintercept = media, colour = "red", linetype = "dashed")
Gráfico Inicial
graf_ejemplo <- datos %>%
ggplot(aes(x = hp, y = mpg, col = gear, shape = vs)) +
geom_point(size = 2)
graf_ejemplo
Añadir Etiquetas (labels)
graf_ejemplo +
labs(title = "Gráfico de dispersión de hp vs mpg",
subtitle = "A mayor hp se observa menor mpg",
x = "hp \n(Caballos de fuerza)",
y = "mpg \n(Millas por galón)",
col = "Cantidad de cambios",
shape = "Tiene forma en V",
caption = "Fuente de datos: mtcars")
Otra forma
graf_ejemplo +
ggtitle(label = "Gráfico de dispersión de hp vs mpg", subtitle = "A mayor hp se observa menor mpg") +
xlab(label = 'hp \n(Caballos de fuerza)') +
ylab(label = 'mpg \n(Millas por galón)')
Añadir Facets
graf_ejemplo +
facet_wrap(~ cyl, nrow = 2, scales = "free_y") +
labs(title = "Caballos de fuerza vs millas por galón por cilindros")
graf_ejemplo +
theme_minimal()
graf_ejemplo +
theme_dark()
library(ggthemes)
## Warning: package 'ggthemes' was built under R version 3.5.3
graf_ejemplo +
theme_economist() +
scale_color_economist() +
ggtitle("Gráfico de dispersión de hp vs mpg")
graf_ejemplo +
theme_stata() +
scale_color_stata() +
ggtitle("Gráfico de dispersión de hp vs mpg")
graf_ejemplo +
theme_hc()+ scale_colour_hc() +
ggtitle("Gráfico de dispersión de hp vs mpg")
Modificar o crear temas
graf_ejemplo +
ggtitle(label = "Gráfico de dispersión de hp vs mpg", subtitle = "A mayor hp se observa menor mpg") +
xlab(label = 'hp \n(Caballos de fuerza)') +
ylab(label = 'mpg \n(Millas por galón)') +
theme_light() +
theme(panel.background = element_rect(fill = "lightblue"),
plot.background = element_rect(colour = "green", fill="gray"),
legend.background = element_rect(fill = "orange"),
axis.text.x = element_text(color = "red", angle = 45))
Modificar o revisar detalle de cada tema
# theme_set(theme_gray(base_size = 20))
#
# theme_gray