¿Cómo evito superponer etiquetas en un gráfico R? [cerrado]


44

Estoy tratando de etiquetar un diagrama de dispersión bastante simple en R. Esto es lo que uso:

plot(SI, TI)
text(SI, TI, Name, pos=4, cex=0.7)

El resultado es mediocre, como puede ver (haga clic para ampliar):

ingrese la descripción de la imagen aquí

Traté de compensar esto usando la textxyfunción, pero no es mejor . Hacer que la imagen en sí sea más grande no funciona para los grupos densos.

¿Hay alguna función o forma fácil de compensar esto y dejar que R tracen las etiquetas que no se superponen ?


Aquí hay un pequeño subconjunto de los datos que tengo:

Name;SI;TI
01_BAD_talking_head;6.944714;4.421208
01_GOOD_talking_head;5.680141;4.864035
01_GOOD_talking_head_subtitles;7.170114;4.664205

1
Publiqué una pregunta similar aquí , eche un vistazo a las respuestas allí ...
Curioso

3
¡Encontré una solución ! ¡Le identify()permite decidir manualmente dónde colocar la etiqueta! No es ideal, pero de las soluciones propuestas esto funciona mejor para mí.
Curioso

Respuestas:



19

El directlabelspaquete hace eso. Desde su página web :

Este paquete es un intento de hacer que el etiquetado directo sea una realidad en la práctica estadística diaria al poner a disposición un conjunto de funciones útiles que hacen que el etiquetado directo de trazados comunes sea fácil de hacer con sistemas de trazado de alto nivel como la red y ggplot2.

Sin embargo, no siempre es posible para parcelas densas.

Aquí hay un breve ejemplo:

set.seed(123)
a <- c(rnorm(10,-3,2),rnorm(10,3,2))
b <- c(rnorm(10,-3,2),rnorm(10,3,2))
dfr <- data.frame(a,b)
dfr$t <- c(paste("A",1:10,sep=""),paste("B",1:10,sep=""))
direct.label(xyplot(b~a,dfr,groups=t, col="black"))

Me las arreglé para deshacerme de la coloración de puntos col="black", pero no las etiquetas.


1
Tengo problemas para que funcione. ¿Podría tal vez proporcionar un ejemplo de trabajo simple?
slhck

1
En su caso, algo así direct.label(xyplot(SI~TI,data=yourDataFrame,group=Name))debería obtener un resultado similar.
Laurent

Perfecto. Esto es lo que terminé usando su último ejemplo simple. Las etiquetas y los puntos de color son realmente muy bonitos, ya que sabes a dónde pertenecen las etiquetas.
slhck

1
Tuve que usar library(lattice)para ir xyplota trabajar.
David J. Harris

14

Te sugiero que eches un vistazo al wordcloudpaquete. Sé que este paquete no se enfoca exactamente en los puntos sino en las etiquetas mismas, y también el estilo parece ser bastante fijo. Pero aún así, los resultados que obtuve al usarlo fueron bastante impresionantes. También tenga en cuenta que la versión del paquete en cuestión se lanzó sobre el momento en que hizo la pregunta, por lo que todavía es muy nueva.

http://blog.fellstat.com/?cat=11

salida textplot ()


9

Me encontré con un problema similar con varias de las parcelas con las que he estado trabajando y escribí un paquete básico que usa la simulación de campo de fuerza para ajustar las ubicaciones de los objetos. La ventaja sobre algunas de las soluciones mencionadas anteriormente es el ajuste dinámico para la proximidad relativa del objeto en 2D. Si bien es posible realizar muchas mejoras, incluidas la heurística y la integración con ggplot, etc., parece que se logra la tarea. Lo siguiente ilustra la funcionalidad:

install.packages("FField", type = "source")
install.packages("ggplot2")
install.packages("gridExtra")
library(FField)
FFieldPtRepDemo()

Por ahora no hay heurística para una variedad de áreas y distribuciones de puntos, ya que la solución satisfizo mis necesidades y quería obtener algo útil para la gente rápidamente, pero las agregaré en el mediano plazo. En este momento, recomiendo escalar gráficos a 100x100 y viceversa y ajustar ligeramente los parámetros predeterminados de atracción y repulsión según lo justifique.


8

En el caso de que simplemente no pueda hacer que las etiquetas funcionen correctamente como lo produjo R, tenga en cuenta que siempre puede guardar los gráficos en un formato vectorial (como .pdf) y colocarlos en un programa de edición como InkScape o Adobe Illustrator.


8

Un par de herramientas adicionales para mirar en R:

Estos no harán todo por usted, pero uno de ellos puede ser parte de una solución.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.