49 votos

¿Cómo puedo evitar la superposición de etiquetas en un gráfico de R?

Estoy tratando de etiquetar un gráfico 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 puedes ver (haz clic para ampliar):

enter image description here

Intenté compensar esto usando el textxy función, pero no es mejor . Hacer la imagen más grande no funciona para los grupos densos.

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


Aquí está 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

10voto

talegari Puntos 584

Me encontré con un problema similar con varias de las parcelas con las que he estado trabajando y escribí un paquete básico que utiliza la simulación del campo de fuerza para ajustar la ubicación de los objetos. La ventaja sobre algunas de las soluciones citadas anteriormente es el ajuste dinámico de la proximidad relativa de los objetos en 2D. Aunque es posible mejorar mucho, incluyendo la heurística y la integración con ggplot, etc., parece que consigue 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 satisfacía mis necesidades y quería sacar algo útil para la gente rápidamente, pero las añadiré a medio plazo. En este momento recomiendo escalar los gráficos a 100x100 y viceversa y ajustar ligeramente los parámetros de atracción y repulsión por defecto como se justifica.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X