tag - Wie man Text jittert, um Überlappung in einem ggplot2 Streudiagramm zu vermeiden?



title tag (1)

Ich möchte eine saubere Version eines Streudiagramms von Textbeschriftungen in ggplot2 erstellen. Das Ziel ist es, die steigenden Werte, die mit ungefähr 25 Elementen verbunden sind, visuell darzustellen. Ich benutze 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 erzeugt:

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

Es gibt viel Platz für all diesen Text in einer Grafik von angemessener Größe - solange der Text frei ist, sich so weit wie möglich horizontal zu verschieben! Ich möchte nicht vertikal jittern, weil der Punkt darin besteht, den y-Wert zu zeigen, der mit jeder Textbeschriftung verbunden ist.

Die Grafik erscheint jedes Mal etwas anders, wenn Sie den Befehl ggplot ausführen - und manchmal sind die Jitter-Ergebnisse besser als zu anderen Zeiten. Aber ich habe keine Möglichkeit gefunden, die Überlappung der Etiketten systematisch zu verhindern.

Ich wäre dankbar für Vorschläge, wie Sie die horizontale Positionierung des Textes bereinigen können, ohne einzelne Elemente manuell verschieben zu müssen. Ich wäre auch froh, andere Tipps zu hören, wie man diese Art von visueller Darstellung verbessern kann.


Sehen Sie sich das FField Paket an

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

(Von diesem Beitrag https://stats.stackexchange.com/a/62856 )





scatter-plot