5.5 Interacción básica con gráficos
Una vez dibujado un gráfico, nos puede interesar en ocasiones interactuar con él, por ejemplo, para obtener información sobre un punto concreto o etiquetarlo. Para conseguir esta funcionalidad, una vez dibujado el gráfico con plot podemos utilizar la función identify de R.
Por ejemplo, supongamos que hemos realizado la siguiente representación gráfica:
<-seq(1,5,0.2)
x<-log(sin(x)^2)
yplot(x,y,col='blue',type='b', ylim=c(-6,1))
Queremos obtener las coordenadas de tres puntos de la función: el mínimo y los puntos donde cambia de tendencia de creciente a decreciente. Para conseguir esta información podemos ejecutar:
<-identify(x,y, plot=FALSE, n=3) pos
Donde indicamos la secuencia de coordenadas x e y; que no queremos que se añada información al gráfico con plot=FALSE (veremos luego cómo hacer que sí se añada una etiqueta) y el número de puntos que queremos identificar (en nuestro caso tres). Tras ejecutar el comando, veremos que el terminal de R queda bloqueado a la espera de que seleccionemos los puntos en el gráfico. Para ello, haremos clic con el ratón en la figura, en los puntos de interés. Cuando hayamos alcanzado el número indicado, veremos que el terminal nos devuelve el control, y que, en la variable pos, queda almacenado el índice de los puntos seleccionados en los vectores x e y:
pos # [1] 4 12 19
12]]
x[[# [1] 3.2
12]]
y[[# [1] -5.681764
min(y)
# [1] -5.681764
Se puede ver que, efectivamente, en la posición 12 estamos obteniendo los valores x e y del mínimo.
Utilizando identify, también es posible etiquetar puntos concretos. Por ejemplo, supongamos que queremos etiquetar el mínimo con la cadena de caracteres «A» y los otros dos puntos con la etiqueta «B». Entonces podemos ejecutar la secuencia de expresiones:
<-seq(1,5,0.2)
x<-log(sin(x)^2)
y
identify(x,y, labels="A", n=1) # Seleccionamos el mínimo con el ratón
# [1] 12
identify(x,y, labels="B", n=2) # Seleccionamos los otros dos puntos
# [1] 4 19
<-seq(1,5,0.2)
x<-log(sin(x)^2)
yplot(x,y,col='blue',type='b', ylim=c(-6,1))
Un resultado similar se podría obtener utilizando identify simplemente para identificar los puntos y más tarde dibujando las etiquetas con text.
Puede que en ocasiones no sepamos a priori el número de puntos a identificar. En ese caso podemos omitir el parámetro n y simplemente seleccionar lo que necesitemos, terminando la selección mediante la pulsación del botón derecho o la tecla escape (dependiendo del sistema).