Jak zniekształcić tekst, aby uniknąć nakładania się na wykresie punktowym ggplot2?

Chciałbym stworzyć czystą wersję wykresu rozrzutu etykiet tekstowych w ggplot2. Celem jest przedstawienie wizualnie rosnących wartości związanych z około 25 przedmiotami. Używam już „pozycji_jittera”, ale zastanawiam się, czy mogę zrobić lepiej.

Oto kilka fałszywych danych:

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)

A oto kod generujący wykres:

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

Na wykresie o rozsądnym rozmiarze jest mnóstwo miejsca na cały ten tekst - o ile tekst można dowolnie przesuwać w poziomie! Nie chcę drgać pionowo, ponieważ chodzi o pokazanie wartości y powiązanej z każdą etykietą tekstową.

Wykres pojawia się nieco inaczej za każdym razem, gdy uruchamiasz polecenie ggplot - a czasami drżące wyniki są lepsze niż w innych czasach. Ale nie znalazłem sposobu, aby systematycznie zapobiegać nakładaniu się etykiet.

Byłbym wdzięczny za wszelkie sugestie, jak wyczyścić poziome położenie tekstu bez konieczności ręcznego przenoszenia poszczególnych elementów. Chętnie też usłyszę inne wskazówki, jak ulepszyć ten rodzaj wizualnej reprezentacji.

questionAnswers(1)

yourAnswerToTheQuestion