Wie wird Text verwackelt, um Überlappungen in einem ggplot2-Streudiagramm zu vermeiden?

Ich möchte eine saubere Version eines Streudiagramms mit Textbeschriftungen in ggplot2 erstellen. Ziel ist es, die mit rund 25 Artikeln verbundenen steigenden Werte visuell darzustellen. Ich verwende bereits "position_jitter", aber ich frage mich, ob ich es besser machen kann.

Hier sind einige Scheindaten:

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)

Und hier ist der Code, der das Diagramm generiert:

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

In einem Diagramm mit angemessener Größe ist ausreichend Platz für den gesamten Text vorhanden - solange der Text horizontal verschoben werden kann! Ich möchte nicht vertikal zittern, da der Punkt darin besteht, den mit jeder Textbeschriftung verbundenen y-Wert anzuzeigen.

Das Diagramm wird bei jedem Ausführen des Befehls ggplot geringfügig anders dargestellt - und manchmal sind die Ergebnisse des Zitterns besser als zu anderen Zeiten. Aber ich habe keine Möglichkeit gefunden, systematisch zu verhindern, dass sich die Etiketten überlappen.

Für Vorschläge, wie die horizontale Positionierung des Texts aufgeräumt werden kann, ohne dass einzelne Elemente manuell verschoben werden müssen, wäre ich dankbar. Ich würde mich auch über weitere Tipps freuen, wie Sie diese Art der visuellen Darstellung verbessern können.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage