Graficando en múltiples paneles

Es posible graficar más de dos variables en un gráfico mapeando una variable al color o por ejemplo el tipo de línea o linetype

library(ggplot2)
library(dplyr)
library(datos)

ggplot(diamantes, aes(quilate, precio)) +
  geom_point(aes(color = color))

En este caso no solo visualizamos la relación entre el precio y el quilate del diamante, también podemos ver que rol juega el color. También podríamos haber intentando resolver el problema generando un gráfico por cada color filtrando las observaciones correspondientes.

diamantes %>% 
  filter(color == "D") %>% 
  ggplot(aes(quilate, precio)) +
  geom_point(aes(color = color))

facet_wrap()

Pero sería muchísimo trabajo si tenemos que hacer esto para cada una de las 7 categorías de color. La buena noticia es que {ggplot2} tiene un par de funciones justo para resolver este problema:

ggplot(diamantes, aes(quilate, precio)) +
  geom_point(aes(color = color)) +
  facet_wrap(~color)

Esta nueva capa con facet_wrap() divide al gráfico inicial en 7 paneles o facets, uno por cada color. Esta función requiere saber que variable será la responsable de separar los paneles y para eso se usa la notación de funciones de R: ~color. Esto se lee como generar paneles “en función del color”.

facet_grid()

¿Y si quisiéramos generar paneles a partir de 2 variables? Para eso existe facet_grid(). En este gráfico generamos paneles viendo la “relación entre el corte y el color” y por ejemplo en el primer panel arriba a la izquierda podremos observar los diamantes que son al mismo tiempo de color D y corte Regular. En este caso mapear la variable color al color de los diamantes no parece ser necesario ya que cada columna ya nos permite identificar eso, sin embargo en algunos casos ayuda a leer el gráfico más rápido.

ggplot(diamantes, aes(quilate, precio)) +
  geom_point(aes(color = color)) +
  facet_grid(corte~color)

Esté ejemplo es parte de un curso más largo para aprender R desde Cero, podés encontrarlo en: https://paocorrales.github.io/deExcelaR/

LS0tCnRpdGxlOiAiVW4gcG9zdCBkZSBlamVtcGxvIgphdXRob3I6ICJQYW8gQ29ycmFsZXMiCmRhdGU6ICIxMS8yMS8yMDIwIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCi0tLQoKCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoCgllY2hvID0gVFJVRSwKCW1lc3NhZ2UgPSBGQUxTRSwKCXdhcm5pbmcgPSBGQUxTRQopCmBgYAoKIyMgR3JhZmljYW5kbyBlbiBtw7psdGlwbGVzIHBhbmVsZXMKCkVzIHBvc2libGUgZ3JhZmljYXIgbcOhcyBkZSBkb3MgdmFyaWFibGVzIGVuIHVuIGdyw6FmaWNvICptYXBlYW5kbyogdW5hIHZhcmlhYmxlIGFsIGBjb2xvcmAgbyBwb3IgZWplbXBsbyBlbCB0aXBvIGRlIGzDrW5lYSBvIGBsaW5ldHlwZWAKCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZGF0b3MpCgpnZ3Bsb3QoZGlhbWFudGVzLCBhZXMocXVpbGF0ZSwgcHJlY2lvKSkgKwogIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gY29sb3IpKQpgYGAKCkVuIGVzdGUgY2FzbyBubyBzb2xvIHZpc3VhbGl6YW1vcyBsYSByZWxhY2nDs24gZW50cmUgZWwgcHJlY2lvIHkgZWwgcXVpbGF0ZSBkZWwgZGlhbWFudGUsIHRhbWJpw6luIHBvZGVtb3MgdmVyIHF1ZSByb2wganVlZ2EgZWwgY29sb3IuIFRhbWJpw6luIHBvZHLDrWFtb3MgaGFiZXIgaW50ZW50YW5kbyByZXNvbHZlciBlbCBwcm9ibGVtYSBnZW5lcmFuZG8gdW4gZ3LDoWZpY28gcG9yIGNhZGEgY29sb3IgZmlsdHJhbmRvIGxhcyBvYnNlcnZhY2lvbmVzIGNvcnJlc3BvbmRpZW50ZXMuCgpgYGB7cn0KZGlhbWFudGVzICU+JSAKICBmaWx0ZXIoY29sb3IgPT0gIkQiKSAlPiUgCiAgZ2dwbG90KGFlcyhxdWlsYXRlLCBwcmVjaW8pKSArCiAgZ2VvbV9wb2ludChhZXMoY29sb3IgPSBjb2xvcikpCgpgYGAKCiMjIyBgZmFjZXRfd3JhcCgpYAoKUGVybyBzZXLDrWEgbXVjaMOtc2ltbyB0cmFiYWpvIHNpIHRlbmVtb3MgcXVlIGhhY2VyIGVzdG8gcGFyYSBjYWRhIHVuYSBkZSBsYXMgNyBjYXRlZ29yw61hcyBkZSBjb2xvci4gTGEgYnVlbmEgbm90aWNpYSBlcyBxdWUge2dncGxvdDJ9IHRpZW5lIHVuIHBhciBkZSBmdW5jaW9uZXMganVzdG8gcGFyYSByZXNvbHZlciBlc3RlIHByb2JsZW1hOgoKYGBge3J9CmdncGxvdChkaWFtYW50ZXMsIGFlcyhxdWlsYXRlLCBwcmVjaW8pKSArCiAgZ2VvbV9wb2ludChhZXMoY29sb3IgPSBjb2xvcikpICsKICBmYWNldF93cmFwKH5jb2xvcikKYGBgCgpFc3RhIG51ZXZhIGNhcGEgY29uIGBmYWNldF93cmFwKClgIGRpdmlkZSBhbCBncsOhZmljbyBpbmljaWFsIGVuIDcgcGFuZWxlcyBvICpmYWNldHMqLCB1bm8gcG9yIGNhZGEgY29sb3IuIEVzdGEgZnVuY2nDs24gcmVxdWllcmUgc2FiZXIgcXVlIHZhcmlhYmxlIHNlcsOhIGxhIHJlc3BvbnNhYmxlIGRlIHNlcGFyYXIgbG9zIHBhbmVsZXMgeSBwYXJhIGVzbyBzZSB1c2EgbGEgKipub3RhY2nDs24gZGUgZnVuY2lvbmVzKiogZGUgUjogYH5jb2xvcmAuIEVzdG8gc2UgbGVlIGNvbW8gZ2VuZXJhciBwYW5lbGVzICoiZW4gZnVuY2nDs24gZGVsIGNvbG9yIiouCgojIyMgYGZhY2V0X2dyaWQoKWAKCsK/WSBzaSBxdWlzacOpcmFtb3MgZ2VuZXJhciBwYW5lbGVzIGEgcGFydGlyIGRlIDIgdmFyaWFibGVzPyBQYXJhIGVzbyBleGlzdGUgYGZhY2V0X2dyaWQoKWAuIEVuIGVzdGUgZ3LDoWZpY28gZ2VuZXJhbW9zIHBhbmVsZXMgdmllbmRvIGxhICoicmVsYWNpw7NuIGVudHJlIGVsIGNvcnRlIHkgZWwgY29sb3IiKiB5IHBvciBlamVtcGxvIGVuIGVsIHByaW1lciBwYW5lbCBhcnJpYmEgYSBsYSBpenF1aWVyZGEgcG9kcmVtb3Mgb2JzZXJ2YXIgbG9zIGRpYW1hbnRlcyBxdWUgc29uIGFsIG1pc21vIHRpZW1wbyBkZSBjb2xvciBEIHkgY29ydGUgUmVndWxhci4gRW4gZXN0ZSBjYXNvICptYXBlYXIqIGxhIHZhcmlhYmxlIGNvbG9yIGFsIGNvbG9yIGRlIGxvcyBkaWFtYW50ZXMgbm8gcGFyZWNlIHNlciBuZWNlc2FyaW8geWEgcXVlIGNhZGEgY29sdW1uYSB5YSBub3MgcGVybWl0ZSBpZGVudGlmaWNhciBlc28sIHNpbiBlbWJhcmdvIGVuIGFsZ3Vub3MgY2Fzb3MgYXl1ZGEgYSBsZWVyIGVsIGdyw6FmaWNvIG3DoXMgcsOhcGlkby4gCgpgYGB7cn0KZ2dwbG90KGRpYW1hbnRlcywgYWVzKHF1aWxhdGUsIHByZWNpbykpICsKICBnZW9tX3BvaW50KGFlcyhjb2xvciA9IGNvbG9yKSkgKwogIGZhY2V0X2dyaWQoY29ydGV+Y29sb3IpCmBgYAoKCkVzdMOpIGVqZW1wbG8gZXMgcGFydGUgZGUgdW4gY3Vyc28gbcOhcyBsYXJnbyBwYXJhIGFwcmVuZGVyIFIgZGVzZGUgQ2VybywgcG9kw6lzIGVuY29udHJhcmxvIGVuOiBbaHR0cHM6Ly9wYW9jb3JyYWxlcy5naXRodWIuaW8vZGVFeGNlbGFSL10oaHR0cHM6Ly9wYW9jb3JyYWxlcy5naXRodWIuaW8vZGVFeGNlbGFSLykK