Dane, którymi się bawię, pochodzą z poniższego źródła internetowego
nba <- read.csv("http://datasets.flowingdata.com/ppg2008.csv", sep=",")
Chcę utworzyć wykres punktowy 2D porównujący dwie metryki z tej tabeli, gdzie każdy gracz reprezentuje kropkę na wykresie. Mam następujący kod:
nbaplot <- ggplot(nba, aes(x= MIN, y= PTS, colour="green", label=Name)) +
geom_point()
To daje mi następujące informacje:
To, czego chcę, to etykieta z nazwą gracza tuż obok kropek. Myślałem, że funkcja etykiety w estetyce ggplot zrobi to za mnie, ale tak się nie stało.
Próbowałem także text()
funkcji i textxy()
funkcji z library(calibrate)
, z których żadna nie wydaje się działać z ggplot.
Jak mogę dodać etykiety imienne do tych punktów?
ggplot2
. Może to ci pomoże.hjust = -0.1
aby wydrukowane etykiety były jak najbardziej oddalone od punktu danych.ggrepel
Pakiet działa świetnie do odstraszania nakładających etykiety tekstowe z dala od siebie. Możesz użyć funkcjigeom_label_repel()
(rysuje prostokąty wokół tekstu) lubgeom_text_repel()
funkcji.Edycja: Aby używać
ggrepel
z liniami, zobacz to i to .Utworzona 01.05.2019 przez pakiet reprex (v0.2.0).
źródło
ggplot2
która wspomniała o podobnej rzeczy github.com/tidyverse/ggplot2/commit/… . Możesz spróbować zainstalować obie wersje deweloperskieggplot2
&,ggrepel
aby sprawdzić, czy problem został rozwiązanylemon
pakiet, który jest bardzo dobry w manipulowaniu legendą fabuły.Zamiast używać ifelse, jak w powyższym przykładzie, można również wstępnie przefiltrować dane przed etykietowaniem w oparciu o pewne wartości progowe, oszczędza to wiele pracy dla urządzenia rysującego:
źródło