¿Cómo jitter texto para evitar la superposición en un ggplot2 scatterplot?

Me gustaría crear una versión limpia de un diagrama de dispersión de etiquetas de texto en ggplot2. El objetivo es representar visualmente los valores crecientes asociados con aproximadamente 25 elementos. Ya estoy usando "position_jitter", pero me pregunto si puedo hacerlo mejor.

Aquí hay algunos datos simulados:

title <- rep("A Really Rather Long Text Label", 25)
value <- runif(25, 1,10)
spacing <- seq(1:25)
df <- data.frame(title, value, spacing, stringsAsFactors = FALSE)

Y aquí está el código que genera el gráfico:

library(ggplot2)
myplot <- ggplot(data=df, aes(x=spacing, y=value, label = title)) +
geom_text(aes(colour = value),
    size = 2.5, fontface = "bold",
    vjust = 0,
    position = position_jitter(width=5, height=0)) +
theme_bw() +
scale_x_continuous(limits = c(-5, 30))+
scale_colour_gradient(low = "#6BAED6", high = "#08306B") +
theme(axis.title.x = element_blank(),
      axis.ticks = element_blank(),
      axis.text.x = element_blank(),
      legend.position = "none")
myplot

Hay una gran cantidad de espacio para todo este texto en un gráfico de tamaño razonable, siempre que el texto sea libre de desplazarse tanto como sea necesario horizontalmente. No quiero fluctuar verticalmente, porque el punto es mostrar el valor y asociado con cada etiqueta de texto.

El gráfico aparece de manera ligeramente diferente cada vez que ejecuta el comando ggplot, y en ocasiones los resultados son mejores que en otras ocasiones. Pero no he encontrado una manera de evitar que las etiquetas se superpongan sistemáticamente.

Agradecería cualquier sugerencia sobre cómo limpiar la posición horizontal del texto sin tener que mover elementos individuales manualmente. También me encantaría escuchar otros consejos sobre cómo mejorar este tipo de representación visual.

Respuestas a la pregunta(1)

Su respuesta a la pregunta