Search code examples
rplotggplot2labelingggrepel

Label points in geom_point


The data I'm playing with comes from the internet source listed below

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

What I want to do, is create a 2D points graph comparing two metrics from this table, with each player representing a dot on the graph. I have the following code:

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

This gives me the following:

NBA Plot

What I want is a label of player's name right next to the dots. I thought the label function in ggplot's aesthetics would do this for me, but it didn't.

I also tried text() function and the textxy() function from library(calibrate), neither of which appears to work with ggplot.

How can I add name labels to these points?


Solution

  • Use geom_text , with aes label. You can play with hjust, vjust to adjust text position.

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

    enter image description here

    EDIT: Label only values above a certain threshold:

      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)
    

    chart with conditional labels