ggplot2 en su contexto

gplot2 es, sin duda, el paquete gráfico de moda en R. Hay quien lo ama, hay quien lo odia, pero cada vez son menos los que lo ignoran. Lo que igual no es tan sabido por los usuarios de R es el contexto en el que nació ggplot2, su relación con el motor gráfico de R y su relación con otros mecanismos de representación gráfica existentes en otros paquetes estadísticos.

Existen en R (cuando menos) dos motores gráficos distintos. Por un lado existe el original. Cuando se utilizan las funciones gráficas tradicionales de alto nivel, tales como como plot, lines, hist, etc.se está interactuando con él. El libro Gráficos Estadísticos con R de Juan Carlos Correa y Nelfi González es una referencia (aunque ha envejecido algo desde su publicación; ¡a ver si Juan Carlos nos regala una nueva edición!).

Pero Paul Murrel desarrolló grid, un motor gráfico alternativo y mucho más flexible que ya está integrado en el sistema base de R. El interesado puede encontrar información adicional sobre grid en la página y el libro de Murrel R Graphics. El usuario habitual de R no lo utiliza directamente (¿le suenan a alguien las funciones wiewport o grid.rect?); es principalmente utilizado por otros paquetes que proporcionan funciones gráficas de alto nivel, tales como lattice, grImport (véase este ejemplo) y finalmente, ggplot2.

Prácticamente todo lo que hay que saber sobre ggplot2 puede encontrarse en la página de Hadley Wickham, incluido su libro (nota: hay gente muy mala que lo ha distribuido como pdf pirata). Pero me gustaría hacer hincapié en ciertos aspectos que parecen injustamente olvidados de muchos.

En primer lugar, que ggplot2 es una implementación en R de ideas desarrolladas por Leland Wilkinson en una serie de artículos (como éste) y en su libro que hace una distinción entre los aspectos sintácticos (la forma en que se especifican) y semánticos (los mismos datos que se representan) de los gráficos. De acuerdo con este documento, Leland Wilkinson trabajó para Systat en los años ochenta. En los años noventa trabajó en técnicas orientada a objetos para gráficos, organizando éstos como árboles. El resultado fue, a finales de los años noventa, Graphics Production Library, GPL una biblioteca de funciones gráficas de Java que desarrolló junto a Dan Rope y Dan Carr. Alrededor de 2005 se unió a SPSS, pero regresó recientemente a Systat. Las ideas contenidas en su libro han dado lugar a implementaciones en diversos entornos.

Aparte de la implementación (más o menos libre) que de las ideas de Wilkinson hizo Wickman para R en ggplot2, existen otras. No conozco Systat, aunque imagino que no las habrá desaprovechado. Pero una pregunta que realicé en StackOverflow me permitió averiguar que existen implementaciones de algo parecido en SAS (véase esto y esto) y en SPSS (ChartBuilder).