Die Daten, mit denen ich spiele, stammen aus der unten aufgeführten Internetquelle
nba <- read.csv("http://datasets.flowingdata.com/ppg2008.csv", sep=",")
Ich möchte ein 2D-Punktediagramm erstellen, in dem zwei Metriken aus dieser Tabelle verglichen werden, wobei jeder Spieler einen Punkt im Diagramm darstellt. Ich habe folgenden Code:
nbaplot <- ggplot(nba, aes(x= MIN, y= PTS, colour="green", label=Name)) +
geom_point()
Dies gibt mir Folgendes:
Was ich möchte, ist eine Bezeichnung des Spielernamens direkt neben den Punkten. Ich dachte, die Label-Funktion in der Ästhetik von ggplot würde dies für mich tun, aber das tat es nicht.
Ich habe auch die text()
Funktion und die textxy()
Funktion von ausprobiert library(calibrate)
, von denen keine mit ggplot zu funktionieren scheint.
Wie kann ich diesen Punkten Namensschilder hinzufügen?
ggplot2
. Vielleicht dies kann Ihnen helfen.hjust = -0.1
, um die gedruckten Etiketten ein wenig vom Datenpunkt zu entfernen.Das
ggrepel
Paket eignet sich hervorragend, um überlappende Textbeschriftungen voneinander abzuwehren. Sie können entwedergeom_label_repel()
(zeichnet Rechtecke um den Text) odergeom_text_repel()
Funktionen verwenden.Erstellt am 01.05.2019 durch das reprex-Paket (v0.2.0).
quelle
ggplot2
Entwickler gesehen, in dem ähnliche Dinge erwähnt wurden: github.com/tidyverse/ggplot2/commit/… . Sie können versuchen, beide Entwicklerversionen vonggplot2
& zu installieren, umggrepel
zu sehen, ob Ihr Problem behoben istlemon
Paket, das sehr gut darin ist, die Handlungslegende zu manipulieren.Anstatt das ifelse wie im obigen Beispiel zu verwenden, können die Daten auch vor dem Etikettieren anhand einiger Schwellenwerte vorgefiltert werden. Dies spart dem Plotgerät viel Arbeit:
quelle