Étiqueter les points dans geom_point

Les données avec lesquelles je joue proviennent de la source Internet indiquée ci-dessous

nba <- read.csv("http://datasets.flowingdata.com/ppg2008.csv", sep=",") 

Ce que je veux faire, c’est créer un graphique de points 2D comparant deux mesures de ce tableau, chaque joueur représentant un point sur le graphique. J’ai le code suivant:

 nbaplot <- ggplot(nba, aes(x= MIN, y= PTS, colour="green", label=Name)) + geom_point() 

Cela me donne ce qui suit:

Terrain NBA

Ce que je veux, c’est une étiquette du nom du joueur juste à côté des points. Je pensais que la fonction label de l’esthétique de ggplot ferait cela pour moi, mais ce n’était pas le cas.

J’ai aussi essayé la fonction text() et la fonction textxy() de la library(calibrate) , qui ne semble pas fonctionner avec ggplot.

Comment puis-je append des étiquettes de nom à ces points?

Utilisez geom_text , avec une étiquette aes . Vous pouvez jouer avec hjust, vjust pour ajuster la position du texte.

 ggplot(nba, aes(x= MIN, y= PTS, colour="green", label=Name))+ geom_point() +geom_text(aes(label=Name),hjust=0, vjust=0) 

entrer la description de l'image ici

EDIT: Etiquette uniquement les valeurs supérieures à un certain seuil:

  ggplot(nba, aes(x= MIN, y= PTS, colour="green", label=Name))+ geom_point() + geom_text(aes(label=ifelse(PTS>24,as.character(Name),'')),hjust=0,vjust=0) 

graphique avec étiquettes conditionnelles

paquet ggrepel fonctionne très bien pour ce cas

 library(ggplot2) library(ggrepel) nba <- read.csv("http://datasets.flowingdata.com/ppg2008.csv", sep = ",") nbaplot <- ggplot(nba, aes(x= MIN, y = PTS)) + geom_point(color = "blue", size = 3) ### geom_label_repel nbaplot + geom_label_repel(aes(label = Name), box.padding = 0.35, point.padding = 0.5, segment.color = 'grey50') + theme_classic() 

entrer la description de l'image ici

 ### geom_text_repel # only label players with PTS > 25 and # align text vertically with nudge_y and allow the labels to # move horizontally with direction = "x" ggplot(nba, aes(x= MIN, y = PTS, label = Name)) + geom_point(color = ifelse(nba$PTS > 25, "red", "blue"), size = 3) + geom_text_repel(data = subset(nba, PTS > 25), nudge_y = 32 - subset(nba, PTS > 25)$PTS, segment.size = 0.2, segment.color = "grey50", direction = "x") + scale_x_continuous(expand = c(0.05, 0.05)) + scale_y_continuous(limits = c(NA, 33)) + theme_classic(base_size = 12) 

Créé le 2018-05-11 par le package reprex (v0.2.0).

Au lieu d’utiliser le ifelse comme dans l’exemple ci-dessus, il est également possible de préfiltrer les données avant l’étiquetage en fonction de certaines valeurs seuils, ce qui économise beaucoup de travail pour le dispositif de traçage:

 xlimit <- 36 ylimit <- 24 ggplot(myData)+geom_point(aes(myX,myY))+ geom_label(data=myData[myData$myX > xlimit & myData$myY> ylimit,], aes(myX,myY,myLabel))