R ggplot2 – Parcelas marginales

Un diagrama marginal es un diagrama de dispersión que tiene histogramas, diagramas de caja o diagramas de puntos en los márgenes de los ejes x e y. Permite estudiar la relación entre 2 variables numéricas. El gráfico base visualiza la correlación entre las variables de los ejes x e y. Por lo general, es un diagrama de dispersión o un diagrama de densidad. Los gráficos marginales normalmente se trazan en el margen superior y derecho del gráfico base y muestran la distribución de las variables de los ejes x e y mediante un histograma, gráfico de barras o gráfico de densidad. Esto nos ayuda a visualizar la intensidad de distribución en diferentes valores de variables a lo largo de ambos ejes. 

Para trazar un diagrama marginal en el lenguaje R, usaremos el paquete ggExtra del lenguaje R. ggExtra es una colección de funciones y capas para mejorar ggplot2. La función ggMarginal() se puede usar para agregar histogramas marginales/diagramas de caja/diagramas de densidad a los diagramas de dispersión ggplot2.

Instalación:

Para instalar el paquete ggExtra usamos:

install.packages("ggExtra")

Creación de Parcelas Marginales

Para crear gráficos marginales usamos la siguiente función para hacer un histograma marginal con un gráfico de dispersión.

Sintaxis: ggMarginal (parcela, tipo)

Parámetros:

  • plot: Determina el diagrama de dispersión base sobre el cual se debe agregar el diagrama marginal.
  • tipo: determina el tipo de gráfico marginal, es decir, histograma, diagrama de caja y densidad.

Ejemplo: diagrama de dispersión básico con histograma marginal, diagrama de densidad y diagrama de caja, todo organizado en una página usando la función grid.arrange() del paquete ggExtra.

R

# load library tidyverse, gridExtra and ggExtra
library(tidyverse)
library(ggExtra)
library(gridExtra)
 
# set theme
theme_set(theme_bw(12))
 
# create x and y vector
xAxis <- rnorm(1000)                
yAxis <- rnorm(1000) + xAxis + 10 
 
# create sample data frame
sample_data <- data.frame(xAxis, yAxis)
 
# create scatter plot using ggplot() function
plot <- ggplot(sample_data, aes(x=xAxis, y=yAxis))+
          geom_point()+
        theme(legend.position="none")
 
# use ggMarginal function to create
# marginal histogram, boxplot and density plot
plot1 <- ggMarginal(plot, type="histogram")
plot2 <- ggMarginal(plot, type="boxplot")
plot3 <- ggMarginal(plot, type="density")
 
# combine plots in a grid
grid.arrange( plot1, plot2, plot3, ncol=3)

Producción:

Personalización de color y tamaño.

Podemos personalizar el parámetro de la función ggmarginal() para crear el aspecto deseado para nuestro gráfico marginal. Podemos usar los parámetros de tamaño, relleno y color de la función ggmarginal() para cambiar el tamaño relativo, el color de relleno de fondo y el color de rutina del gráfico marginal, respectivamente.

Sintaxis: ggMarginal (parcela, tipo, relleno, color, tamaño)

Parámetros:

  • plot: Determina el diagrama de dispersión base sobre el cual se debe agregar el diagrama marginal.
  • tipo: determina el tipo de diagrama marginal, es decir, histograma, diagrama de caja y densidad.
  • relleno: determina el color de relleno de fondo de la trama marginal
  • color: determina el color del contorno de la trama marginal
  • tamaño: determina el tamaño relativo de los elementos de la trama.

Ejemplo: aquí, hemos modificado la trama del ejemplo anterior con colores personalizados y parámetros de tamaño.

R

# load library tidyverse, gridExtra and ggExtra
library(tidyverse)
library(ggExtra)
library(gridExtra)
 
# set theme
theme_set(theme_bw(12))
 
# create x and y vector
xAxis <- rnorm(1000)                
yAxis <- rnorm(1000) + xAxis + 10 
 
# create sample data frame
sample_data <- data.frame(xAxis, yAxis)
 
# create scatter plot using ggplot() function
plot <- ggplot(sample_data, aes(x=xAxis, y=yAxis))+
          geom_point()+
        theme(legend.position="none")
 
# use ggMarginal function to create
# marginal histogram, boxplot and density plot
# fill, colo and size property is used for customization
plot1 <- ggMarginal(plot, type="histogram", fill= "green", size=10)
plot2 <- ggMarginal(plot, type="boxplot", color="yellow" )
plot3 <- ggMarginal(plot, type="density", color="green")
 
# combine plots in a grid
grid.arrange( plot1, plot2, plot3, ncol=3)

Producción:

Parcela marginal para un solo eje

A veces necesitamos un gráfico marginal en un solo eje, ya sea el eje x o el eje y. En esa situación, usamos el parámetro margins de la función ggmarginal(). El eje donde queremos que aparezca el gráfico marginal se da como el valor de los márgenes del argumento.

Sintaxis: ggMarginal( plot, type, margins )

Parámetros:

  • plot: Determina el diagrama de dispersión base sobre el cual se debe agregar el diagrama marginal.
  • tipo: determina el tipo de diagrama marginal, es decir, histograma, diagrama de caja y densidad.
  • margins: Determina el eje donde se requiere la parcela marginal

Ejemplo: aquí hay dos gráficos, uno con el gráfico marginal en el eje x y el otro en el eje y.

R

# load library tidyverse, gridExtra and ggExtra
library(tidyverse)
library(ggExtra)
library(gridExtra)
 
# set theme
theme_set(theme_bw(12))
 
# create x and y vector
xAxis <- rnorm(1000)                
yAxis <- rnorm(1000) + xAxis + 10 
 
# create sample data frame
sample_data <- data.frame(xAxis, yAxis)
 
# create scatter plot using ggplot() function
plot <- ggplot(sample_data, aes(x=xAxis, y=yAxis))+
          geom_point()+
        theme(legend.position="none")
 
# use ggMarginal function to create
# marginal histogram on x-axis
plot1 <- ggMarginal(plot, type="histogram", margins='x')
 
# use ggMarginal function to
# create marginal histogram on y-axis
plot2 <- ggMarginal(plot, type="histogram", margins='y')
 
# combine plots in a grid
grid.arrange( plot1, plot2, ncol=2)

Producción:

Publicación traducida automáticamente

Artículo escrito por mishrapriyank17 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *