2015-03-27

Diagramas de caja de un data frame con ggplot2: una o varias columnas

Title Vamos a ver dos ejemplos específicos que dejamos de lado en la introducción a los diagrama de caja en ggplot2. En ambos ejemplos la sintaxis difiere notablemente de la empleada con la función boxplot {graphics}.

Una columna o variable

Es necesario crear una variable falsa de agrupación factor(0). Además, borramos la etiqueta y las marcas de este eje ficticio x.

# ggplot2
require(ggplot2
bp <- ggplot(iris, aes(factor(0), Sepal.Width))
bp + geom_boxplot() + xlab("") + scale_x_discrete(breaks = NULL)
  • Mediante la función qplot.
qplot(data = iris, x = factor(0), y = Sepal.Width, geom = "boxplot", xlab = "") + scale_x_discrete(breaks = NULL)
  • El equivalente con boxplot {graphics}.
# Base graphics
boxplot(iris$Sepal.Width)

Todas las columnas

Empleamos el paquete reshape2 para convertir los datos en el formato adecuado con la función melt antes de representarlos. Representará solamente aquellas columnas de tipo numérico.

library(reshape2)
ggplot(data = melt(iris), aes(x = variable, y = value)) + geom_boxplot(aes(fill = variable))

Selección las columnas

library(MASS)
ggplot(data = melt(UScereal), aes(x = variable, y = value)) + 
  geom_boxplot(aes(fill = variable))
Como cada variable se encuentra en un rango muy diferente, seleccionamos algunas columnas con rangos similares.

data <- UScereal[, c('protein', 'fat', 'fibre', 'sugars')]
ggplot(data = melt(data), aes(x = variable, y= value)) + 
  geom_boxplot(aes(fill = variable))

Notas

Los diagramas de caja en ggplot2, al contrario que con la función boxplot, están pensados para representar dos variables. Necesitan 3 argumentos:

data = data frame, en el caso de la función qplot es necesario que vaya precedido de data =.
x = un factor o variable categórica. Dentro de la función aes en el caso de ggplot.
y = un vector numérico. Dentro de la función aes en el caso de ggplot.

En el caso de una sola variable necesitamos crear un factor o variable categórica falsa factor(0) para que agrupe por el mismo. En el caso de varias columnas necesitamos que los valores (vector numérico) en una sola columna, lo que obtenemos con la función melt. Automáticamente toma la columna Species como id variables (identifier variables) por ser la única variable categórica (factor) del data frame.

head(melt(iris))
Using Species as id variables
  Species     variable value
1  setosa Sepal.Length   5.1
2  setosa Sepal.Length   4.9
3  setosa Sepal.Length   4.7
4  setosa Sepal.Length   4.6
5  setosa Sepal.Length   5.0
6  setosa Sepal.Length   5.4

Referencias

No hay comentarios:

Publicar un comentario

Nube de datos