Saltar al contenido principal

# 6.1: Una visión general de los gráficos R

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\id}{\mathrm{id}}$$ $$\newcommand{\Span}{\mathrm{span}}$$

( \newcommand{\kernel}{\mathrm{null}\,}\) $$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$ $$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$ $$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\id}{\mathrm{id}}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\kernel}{\mathrm{null}\,}$$

$$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$

$$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$

$$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$ $$\newcommand{\AA}{\unicode[.8,0]{x212B}}$$

$$\newcommand{\vectorA}[1]{\vec{#1}} % arrow$$

$$\newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow$$

$$\newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vectorC}[1]{\textbf{#1}}$$

$$\newcommand{\vectorD}[1]{\overrightarrow{#1}}$$

$$\newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}}$$

$$\newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}}$$

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\avec}{\mathbf a}$$ $$\newcommand{\bvec}{\mathbf b}$$ $$\newcommand{\cvec}{\mathbf c}$$ $$\newcommand{\dvec}{\mathbf d}$$ $$\newcommand{\dtil}{\widetilde{\mathbf d}}$$ $$\newcommand{\evec}{\mathbf e}$$ $$\newcommand{\fvec}{\mathbf f}$$ $$\newcommand{\nvec}{\mathbf n}$$ $$\newcommand{\pvec}{\mathbf p}$$ $$\newcommand{\qvec}{\mathbf q}$$ $$\newcommand{\svec}{\mathbf s}$$ $$\newcommand{\tvec}{\mathbf t}$$ $$\newcommand{\uvec}{\mathbf u}$$ $$\newcommand{\vvec}{\mathbf v}$$ $$\newcommand{\wvec}{\mathbf w}$$ $$\newcommand{\xvec}{\mathbf x}$$ $$\newcommand{\yvec}{\mathbf y}$$ $$\newcommand{\zvec}{\mathbf z}$$ $$\newcommand{\rvec}{\mathbf r}$$ $$\newcommand{\mvec}{\mathbf m}$$ $$\newcommand{\zerovec}{\mathbf 0}$$ $$\newcommand{\onevec}{\mathbf 1}$$ $$\newcommand{\real}{\mathbb R}$$ $$\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}$$ $$\newcommand{\laspan}[1]{\text{Span}\{#1\}}$$ $$\newcommand{\bcal}{\cal B}$$ $$\newcommand{\ccal}{\cal C}$$ $$\newcommand{\scal}{\cal S}$$ $$\newcommand{\wcal}{\cal W}$$ $$\newcommand{\ecal}{\cal E}$$ $$\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}$$ $$\newcommand{\gray}[1]{\color{gray}{#1}}$$ $$\newcommand{\lgray}[1]{\color{lightgray}{#1}}$$ $$\newcommand{\rank}{\operatorname{rank}}$$ $$\newcommand{\row}{\text{Row}}$$ $$\newcommand{\col}{\text{Col}}$$ $$\renewcommand{\row}{\text{Row}}$$ $$\newcommand{\nul}{\text{Nul}}$$ $$\newcommand{\var}{\text{Var}}$$ $$\newcommand{\corr}{\text{corr}}$$ $$\newcommand{\len}[1]{\left|#1\right|}$$ $$\newcommand{\bbar}{\overline{\bvec}}$$ $$\newcommand{\bhat}{\widehat{\bvec}}$$ $$\newcommand{\bperp}{\bvec^\perp}$$ $$\newcommand{\xhat}{\widehat{\xvec}}$$ $$\newcommand{\vhat}{\widehat{\vvec}}$$ $$\newcommand{\uhat}{\widehat{\uvec}}$$ $$\newcommand{\what}{\widehat{\wvec}}$$ $$\newcommand{\Sighat}{\widehat{\Sigma}}$$ $$\newcommand{\lt}{<}$$ $$\newcommand{\gt}{>}$$ $$\newcommand{\amp}{&}$$ $$\definecolor{fillinmathshade}{gray}{0.9}$$

Reducida a su forma más simple, se puede pensar en un gráfico R como muy parecido a una pintura. Empiezas con un lienzo vacío. Cada vez que usas una función gráfica, pinta algunas cosas nuevas en tu lienzo. Más adelante, puedes pintar más cosas por encima si quieres; pero al igual que pintar, no puedes “deshacer” tus trazos. Si cometes un error, tienes que tirar tu pintura y empezar de nuevo. Afortunadamente, esto es mucho más fácil de hacer al usar R que al pintar una imagen en la vida real: borras la trama y luego escribes un nuevo conjunto de comandos. 88 Esta forma de pensar sobre el dibujo de gráficos se conoce como el modelo del pintor. Hasta ahora, esto probablemente no suene particularmente complicado, y para la gran mayoría de las gráficas que querrás dibujar es exactamente tan simple como suena. Al igual que pintar en la vida real, los dolores de cabeza suelen comenzar cuando profundizamos en los detalles. Para ver por qué, voy a ampliar un poco más esta “metáfora de la pintura” solo para mostrarte los fundamentos de lo que está pasando bajo el capó, pero antes de hacerlo quiero enfatizar que realmente no necesitas entender todas estas complejidades para poder dibujar gráficas. ¡Había estado usando R durante años antes de darme cuenta de que la mayoría de estos problemas existían! Sin embargo, no quiero que pases por el mismo dolor por el que pasé cada vez que descubría inadvertidamente una de estas cosas, así que aquí tienes un resumen rápido.

En primer lugar, si quieres pintar un cuadro, necesitas pintarlo sobre algo. En la vida real, puedes pintar en muchas cosas diferentes. Pintar sobre lienzo no es lo mismo que pintar sobre papel, y ninguno es lo mismo que pintar en una pared. En R, a lo que pintas tu gráfico se llama dispositivo. Para la mayoría de las aplicaciones que veremos en este libro, este “dispositivo” será una ventana en tu computadora. Si estás usando Windows como tu sistema operativo, entonces el nombre de este dispositivo es windows; en una Mac se llama cuarzo porque ese es el nombre del software que usa el Mac OS para dibujar bonitas imágenes; y en Linux/Unix, probablemente estés usando X11. Por otro lado, si estás usando Rstudio (independientemente del sistema operativo en el que estés), hay un dispositivo separado llamado RStudioGD que obliga a R a pintar dentro del panel de “trazados” en Rstudio. Sin embargo, desde la perspectiva de las computadoras no hay nada terriblemente especial en dibujar imágenes en pantalla: y así R está bastante feliz de pintar cuadros directamente en un archivo. R puede pintar varios tipos diferentes de archivos de imagen: jpeg, png, pdf, postscript, tiff y bmp son todos entre las opciones que tienes a tu disposición. En su mayor parte, estos diferentes dispositivos se comportan todos de la misma manera, por lo que realmente no necesitas saber mucho sobre las diferencias entre ellos a la hora de aprender a dibujar imágenes. Pero, al igual que la pintura de la vida real, a veces los detalles sí importan. A menos que se indique lo contrario, puede asumir que estoy dibujando una imagen en pantalla, usando el dispositivo apropiado (es decir, ventanas, cuarzo, X11 o rStudioGd). Una de las raras ocasiones en las que estos se comportan de manera diferente entre sí, voy a tratar de señalarlo en el texto.

En segundo lugar, cuando pintas un cuadro necesitas pintarlo con algo. A lo mejor quieres hacer una pintura al óleo, pero a lo mejor quieres usar acuarela. Y, en términos generales, más o menos hay que escoger uno u otro. El análogo a esto en R es un “sistema gráfico”. Un sistema gráfico define una colección de comandos gráficos de muy bajo nivel sobre qué dibujar y dónde dibujarlo. Algo que sorprende a la mayoría de los nuevos usuarios de R es el descubrimiento de que R en realidad tiene dos sistemas gráficos completamente independientes, conocidos como gráficos tradicionales (en el paquete de gráficos) y grid gráficos (en el paquete de cuadrícula). 89 No es sorprendente que el sistema gráfico tradicional sea el más antiguo de los dos: de hecho, en realidad es más antiguo que R ya que tiene sus orígenes en S, el sistema del que desciende R. Los gráficos de cuadrícula son más nuevos y, en algunos aspectos, más potentes, por lo que muchas de las herramientas gráficas más recientes y más fantásticas de R hacen uso de gráficos de cuadrícula. Sin embargo, los gráficos de cuadrícula son bestias algo más complicadas, por lo que la mayoría de la gente comienza aprendiendo el sistema gráfico tradicional. Sin embargo, siempre y cuando no quieras usar ningún comando de bajo nivel tú mismo, entonces realmente no necesitas importarte si estás usando gráficos tradicionales o gráficos de cuadrícula. Sin embargo, en el momento en que quieras ajustar tu figura usando algunos comandos de bajo nivel sí necesitas que te preocupes. Debido a que estos dos sistemas diferentes son prácticamente incompatibles entre sí, hay una división bastante grande en el universo gráfico R. A menos que se indique lo contrario, se puede suponer que todo lo que digo se refiere a los gráficos tradicionales.

En tercer lugar, una pintura se suele hacer en un estilo particular. A lo mejor es una naturaleza muerta, a lo mejor es una pieza impresionista, o tal vez estás tratando de molestarme fingiendo que el cubismo es un estilo artístico legítimo. Independientemente, cada estilo artístico impone alguna estética general y tal vez incluso restricciones sobre lo que se puede (o debe) pintar usando ese estilo. En la misma línea, R tiene bastantes paquetes diferentes, cada uno de los cuales proporciona una colección de comandos gráficos de alto nivel. Un solo comando de alto nivel es capaz de dibujar un gráfico completo, completo con una gama de opciones de personalización. La mayoría pero no todos los comandos de alto nivel de los que hablaré en este libro provienen del propio paquete de gráficos, y así pertenecen al mundo de los gráficos tradicionales. Todos estos comandos tienden a compartir un estilo visual común, aunque hay algunos gráficos que voy a usar que provienen de otros paquetes que difieren un poco en estilo. Al otro lado de la gran división, el universo grid se basa en gran medida en dos paquetes diferentes —celosía y ggplots2 —, cada uno de los cuales proporciona un estilo visual bastante diferente. Como probablemente hayas adivinado, hay un montón de funciones separadas que necesitarías aprender si quieres usar gráficos de celosía o hacer uso de los ggplots2. No obstante, para los fines de este libro me limitaré a hablar de las herramientas gráficas básicas.

En este punto, creo que hemos cubierto material de fondo más que suficiente. El punto que estoy tratando de hacer al brindar esta discusión no es para asustarte con todos estos horribles detalles, sino más bien tratar de transmitirte el hecho de que R realmente no proporciona un solo sistema gráfico coherente. En cambio, R en sí proporciona una plataforma, y diferentes personas han construido diferentes herramientas gráficas usando esa plataforma. Como consecuencia de este hecho, hay dos universos diferentes de gráficos, y una gran multitud de paquetes que viven en ellos. En esta etapa no necesitas entender estas complejidades, pero es útil saber que están ahí. Pero por ahora, creo que podemos estar contentos con una visión más simple de las cosas: dibujaremos imágenes en pantalla usando el sistema gráfico tradicional, y en la medida de lo posible nos cegaremos únicamente a comandos de alto nivel.

Entonces empecemos a pintar.

This page titled 6.1: Una visión general de los gráficos R is shared under a CC BY-SA 4.0 license and was authored, remixed, and/or curated by Danielle Navarro via source content that was edited to the style and standards of the LibreTexts platform.