Ich habe ein Dataset, in dem jeder Datenpunkt einen x-Wert hat, der beschränkt ist (repräsentiert eine tatsächliche Instanz einer quantitativen Variablen), y-Wert ist beliebig (existiert einfach, um eine Dimension zu verteilen Text) und eine Bezeichnung. Meine Datensätze können sehr groß sein, und es gibt häufig Textüberschneidungen, selbst wenn ich versuche, die Daten so weit wie möglich über die y-Achse zu verteilen.ggrepel: Text in nur einer Richtung abstoßen und Werte von abgestoßenem Text zurückgeben
Daher versuche ich das neue ggrepel zu verwenden. Ich versuche jedoch, die Textbeschriftungen an ihrer x-Wert-Position eingeschränkt zu halten, während sie sich nur gegenseitig in y-Richtung abstoßen können.
Als Beispiel erzeugt der folgende Code ein Diagramm für 32 Datenpunkte, wobei die x-Werte die Anzahl der Zylinder in einem Auto zeigen, und die y-Werte sind zufällig bestimmt (haben keine Bedeutung, aber eine Sekunde zu liefern) Dimension für Textplottzwecke). Ohne ggrepel zu verwenden, gibt es erhebliche Überschneidungen im Text:
library(ggrepel)
library(ggplot2)
set.seed(1)
data = data.frame(x=runif(100, 1, 10),y=runif(100, 1, 10),label=paste0("label",seq(1:100)))
origPlot <- ggplot(data) +
geom_point(aes(x, y), color = 'red') +
geom_text(aes(x, y, label = label)) +
theme_classic(base_size = 16)
ich den Text überlappt mit ggrepel beheben kann, wie unten gezeigt. Dies ändert jedoch nicht nur die y-Werte, sondern auch die x-Werte. Ich versuche, die x-Werte nicht zu verändern, da sie eine tatsächliche physikalische Bedeutung (die Anzahl der Zylinder) darstellen:
repelPlot <- ggplot(data) +
geom_point(aes(x, y), color = 'red') +
geom_text_repel(aes(x, y, label = label)) +
theme_classic(base_size = 16)
Als Hinweis, der Grund, warum ich nicht dem x-Wert zulassen Der Text zu ändern ist, weil ich nur den Text (nicht die Punkte) plotten. Hingegen scheint es, dass die meisten Beispiele in grepel die Position der Punkte behalten (so dass ihre Werte wahr bleiben) und nur die x- und y-Werte der Labels abstoßen. Dann die Punkte und verbunden mit den Beschriftungen mit Segmenten (das sieht man in meinem zweiten Plotbeispiel).
Ich habe die Punkte in den beiden obigen Beispielen zu Demonstrationszwecken behalten. Allerdings bin ich behielt nur den Text (und damit die Punkte und die Segmente werden zu entfernen), so dass ich mit so etwas wie folgt aus:
repelPlot2 <- ggplot(data) + geom_text_repel(aes(x, y, label = label), segment.size = 0) + theme_classic(base_size = 16)
Meine Frage ist zweifach:
1) Kann ich die Textbeschriftungen nur in y-Richtung abstoßen?
2) Ist es mir möglich, eine Struktur zu erhalten, die die neuen (abgestoßenen) y-Werte des Textes enthält?
Vielen Dank für jeden Hinweis!
Ich verstehe nicht, wie das das Problem lösen würde? Vielen Dank. – luckButtered