ggExtra
La función ggMarginal
del paquete ggExtra
permite añadir histogramas marginales a un gráfico de dispersión ya creado. Para tal propósito tendrás que guardar el diagrama de dispersión hecho con ggplot2 dentro de una variable y pasarlo a ggMarginal
, especificando type = "histogram"
.
# install.packages("ggplot2")
# install.packages("ggExtra")
library(ggplot2)
library(ggExtra)
# Guarda el gráfico de dispersión en una variable
p <- ggplot(cars, aes(x = speed, y = dist)) +
geom_point()
# Crea el gráfico con histogramas marginales
ggMarginal(p, type = "histogram")
Histograma solo en el eje X
El argumento margins
puede ser usado para añadir solo uno de los histogramas marginales, en este caso el del eje X.
# install.packages("ggplot2")
# install.packages("ggExtra")
library(ggplot2)
library(ggExtra)
# Guarda el gráfico de dispersión en una variable
p <- ggplot(cars, aes(x = speed, y = dist)) +
geom_point()
# Histograma marginal horizontal
ggMarginal(p, type = "histogram",
margins = "x")
Histograma solo en el eje vertical
Si prefieres mostrar únicamente el histograma del eje Y establece margins = "y"
.
# install.packages("ggplot2")
# install.packages("ggExtra")
library(ggplot2)
library(ggExtra)
# Guarda el gráfico de dispersión en una variable
p <- ggplot(cars, aes(x = speed, y = dist)) +
geom_point()
# Histograma marginal vertical
ggMarginal(p, type = "histogram",
margins = "y")
Tamaño relativo
El argumento size
modifica el tamaño relativo entre los histogramas y el gráfico de dispersión. El valor por defecto es 5 (el gráfico de dispersión es 5 veces más grande que los histogramas).
# install.packages("ggplot2")
# install.packages("ggExtra")
library(ggplot2)
library(ggExtra)
# Guarda el gráfico de dispersión en una variable
p <- ggplot(cars, aes(x = speed, y = dist)) +
geom_point()
# Cambiando el tamaño relativo
ggMarginal(p, type = "histogram",
size = 3)
Argumentos a ser pasados a geom_boxplot
Puedes pasar argumentos a la función geom_boxplot
. Si quieres establecer argumentos para cada histograma pasa una lista a xparams
e yparams
.
# install.packages("ggplot2")
# install.packages("ggExtra")
library(ggplot2)
library(ggExtra)
# Guarda el gráfico de dispersión en una variable
p <- ggplot(cars, aes(x = speed, y = dist)) +
geom_point()
# Personalización barras
ggMarginal(p, type = "histogram",
binwidth = 4)
Histograma con curvas de densidad
Si quieres superponer las curvas de densidad de los histogramas usa type = "densigram"
.
# install.packages("ggplot2")
# install.packages("ggExtra")
library(ggplot2)
library(ggExtra)
# Guarda el gráfico de dispersión en una variable
p <- ggplot(cars, aes(x = speed, y = dist)) +
geom_point()
# Densigrama
ggMarginal(p, type = "densigram")
Color de fondo
Cambia el color de fondo de los histogramas con fill
.
# install.packages("ggplot2")
# install.packages("ggExtra")
library(ggplot2)
library(ggExtra)
# Guarda el gráfico de dispersión en una variable
p <- ggplot(cars, aes(x = speed, y = dist)) +
geom_point()
# Cambiando el color de fondo
ggMarginal(p, type = "histogram",
fill = 4)
Color del borde
También puedes personalizar el color del borde con el argumento col
.
# install.packages("ggplot2")
# install.packages("ggExtra")
library(ggplot2)
library(ggExtra)
# Guarda el gráfico de dispersión en una variable
p <- ggplot(cars, aes(x = speed, y = dist)) +
geom_point()
# Color de fondo y de borde de los histogramas marginales
ggMarginal(p, type = "histogram",
fill = "white",
col = 4)
Argumentos para cada histograma
Si quieres personalizar cada histograma por separado, pasa una lista de argumentos para cada eje con xparams
e yparams
.
# install.packages("ggplot2")
# install.packages("ggExtra")
library(ggplot2)
library(ggExtra)
# Guarda el gráfico de dispersión en una variable
p <- ggplot(cars, aes(x = speed, y = dist)) +
geom_point()
# Argumentos para cada histograma marginal
ggMarginal(p, type = "histogram",
xparams = list(fill = 4),
yparams = list(fill = 3))
Histogramas por grupo
Por último, si tu conjunto de datos contiene una variable categórica que representa grupos puedes crear histogramas para cada grupo en cada margen.
# install.packages("ggplot2")
# install.packages("ggExtra")
library(ggplot2)
library(ggExtra)
# Variable categórica de ejemplo
cars$grupo <- c(rep("A", 25), rep("B", 25))
# Guarda el gráfico de dispersión en una variable
p <- ggplot(cars, aes(x = speed, y = dist, color = grupo)) +
geom_point()
# Histogramas marginales por grupo
ggMarginal(p, type = "histogram",
groupColour = TRUE,
groupFill = TRUE)
También te puede interesar