with ggplot geom_text geom_point geom_label_repel adding r plot ggplot2 labeling ggrepel

geom_text - r ggplot points



Etiquetar puntos en geom_point (3)

Los datos con los que estoy jugando provienen de la fuente de Internet que figura a continuación

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

Lo que quiero hacer es crear un gráfico de puntos 2D que compare dos métricas de esta tabla, con cada jugador representando un punto en el gráfico. Tengo el siguiente código:

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

Esto me da lo siguiente:

Lo que quiero es una etiqueta del nombre del jugador justo al lado de los puntos. Pensé que la función de etiqueta en la estética de ggplot haría esto por mí, pero no fue así.

También probé la función text() y la función textxy() de la library(calibrate) , ninguna de las cuales parece funcionar con ggplot.

¿Cómo puedo agregar etiquetas de nombre a estos puntos?


En lugar de usar ifelse como en el ejemplo anterior, también se pueden prefiltrar los datos antes del etiquetado en función de algunos valores de umbral, lo que ahorra mucho trabajo al dispositivo de trazado:

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))


Usa geom_text , con la etiqueta aes . Puedes jugar con hjust, vjust para ajustar la posición del texto.

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

EDITAR: etiqueta solo los valores por encima de un cierto umbral:

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)


ggrepel paquete ggrepel funciona muy bien para este caso

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()

### 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)

Creado en 2018-05-11 por el paquete reprex (v0.2.0).