[RDS] Ejercicios resueltos para la sección 3.5.1

Nueva entrega de la serie de ejercicios resueltos para el weblibro “R for Data Science“, al que podéis acceder desde este enlace. En esta ocasión nos ocuparemos de la sección 3.5.1, correspondiente a los problemas que tratan de asentar la división de los puntos de un gráfico en diferentes imágenes, en función de cierta categoría a la que pertenezcan (los famosos facets).

# 1. What happens if you facet on a continuous variable?

library(tidyverse)
ggplot(data = mpg) +
    geom_point(mapping = aes(x = displ, y = hwy)) +
    facet_wrap(~ cty, nrow = 3)

ej-3-5-1-1-1

Generalmente, los facets se utilizan con variables categóricas, ya que generaremos un gráfico por cada una de sus clases. Al emplear una variable cuantitativa, la imagen resultante pierde parte de su sentido, ya que hemos creado tantos diagramas como valores distintos posee dicha variable.

Podría ser útil si nuestro objetivo es examinar la existencia de tendencias para ciertos valores particulares de una variable cuantitativa, aunque quizá en tal caso sería más recomendable que directamente generásemos los gráficos de interés, en lugar de esta ristra de diagramas.

Veamos un par de ejemplos adicionales:

ggplot(data = mpg) +
    geom_point(mapping = aes(x = displ, y = hwy)) +
    facet_wrap(~ displ, nrow = 4)

ej-3-5-1-1-2

ggplot(data = mpg) +
    geom_point(mapping = aes(x = displ, y = hwy)) +
    facet_wrap(~ hwy, nrow = 4)

ej-3-5-1-1-3

# 2. What do the empty cells in plot with facet_grid(drv ~ cyl) mean?
#    How do they relate to this plot?

ggplot(data = mpg) +
    geom_point(mapping = aes(x = drv, y = cyl)) +
    facet_grid(drv ~ cyl)

ej-3-5-1-2-1

Un diagrama ciertamente muy similar a este ya nos apareció en la resolución de los ejercicios de una sección anterior. Cada punto indica la existencia de valores en el conjunto de datos que se caracterizan por poseer la combinación de valores de las variables representadas.

La ausencia de puntos en algunas de las “celdas” del bloque de gráficos anterior nos transmiten pues que el conjunto de datos no presenta vehículos que satisfagan las combinaciones de las variables consideradas. Por ejemplo, no encontraremos coches cuyo sistema de tracción sea integral y sus motores posean cuatro cilindros.

PD: personalmente, opino que no tengo que estar capturando la esencia de este ejercicio, puesto que es un tanto extraño generar un gráfico de la manera que nos lo solicitan en el enunciado. No obstante, si prescindimos del elemento facet, creamos un diagrama de puntos como el visto en la resolución de ejercicios para una sección precedente, lo cual tampoco termina de convencerme, puesto que no encajaría en esta. Me refiero a:

ggplot(data = mpg) +
    geom_point(mapping = aes(x = drv, y = cyl))

ej-3-5-1-2-2

# 3. What plots does the following code make?
#    What does . do?

ggplot(data = mpg) +
    geom_point(mapping = aes(x = displ, y = hwy)) +
    facet_grid(drv ~ .)

ej-3-5-1-3-1

ggplot(data = mpg) +
    geom_point(mapping = aes(x = displ, y = hwy)) +
    facet_grid(. ~ cyl)

ej-3-5-1-3-2

Si utilizamos ~ ., los gráficos se dividen en un número de filas igual a la cantidad de categorías de la variable. De manera similar, si empleamos . ~, la división se llevará a cabo ahora por columnas.

Por ejemplo, retomando de nuevo el primer gráfico, observaremos el efecto comentado en el párrafo anterior si intercambiamos de lugar las posiciones de . y drv:

ggplot(data = mpg) +
    geom_point(mapping = aes(x = displ, y = hwy)) +
    facet_grid(. ~ drv)

ej-3-5-1-3-3

# 4. Take the first faceted plot in this section:

ggplot(data = mpg) +
    geom_point(mapping = aes(x = displ, y = hwy)) +
    facet_wrap(~ class, nrow = 2)

#    What are the advantages to using faceting instead
#    of the colour aesthetic?
#    What are the disadvantages?
#    How might the balance change if you had a larger dataset?

ej-3-5-1-4-1

Una posible ventaja la encontramos en el hecho de que hemos aislado por completo una categoría de cierta variable, y podemos llevar a cabo un análisis visual, de manera más cómoda, de los valores que para las otras dos variables posee. No obstante, como un posible inconveniente o desventaja, tenemos que se pierde la visión global de la situación, siendo más complicado que realicemos comparaciones entre los diferentes grupos de forma visual.

Con grandes conjuntos de datos, si existe gran solapamiento entre los valores de distintas categorías, será complicado distinguirlas bien utilizando un único gráfico y, por tanto, será más recomendable utilizar facets. Sin embargo, todo depende de la situación particular que caracterice al conjunto de datos.

# 5. Read ?facet_wrap.
#    What does nrow do? What does ncol do?
#    What other options control the layout of the individual panels?
#    Why doesn’t facet_grid() have nrow and ncol variables?

?facet_wrap

Los argumentos nrow y ncol nos permiten determinar, respectivamente, el número de filas y columnas en las que se organizará la serie de gráficos que generaremos.

Si examinamos con atención la documentación asociada a dicha función, encontraremos otro argumento, dir, cuya función es importante de cara al diseño del mosaico de imágenes, ya que nos permite controlar la dirección en la que éstas se generan (bien horizontalmente, por defecto; bien verticalmente).

La función facet_grid() no requiere el uso de los argumentos nrow y ncol puesto que, de forma automática, se generan esos valores en función del número de categorías de la variable escogida para llevar a cabo la división.

# 6. When using facet_grid() you should usually put the
#    variable with more unique levels in the columns. Why?

?facet_grid

Cuantos más niveles posea cierta variable, mayor será la “separación” de los puntos que conseguiremos utilizando esta función.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s