3

How do I add data labels to points using ggplot?

I have a stacked data frame called "stacked":

 > head(stacked)
    time    value variable
 1  100 152.2211       gg
 2  110 146.3304       gg
 3  115 143.5831       gg
 4  120 140.9527       gg
 5  125 138.4297       gg
 6  130 136.0057       gg

 > tail(stacked)
      time    value variable
  755 1975 56.02922        t
  756 1980 56.14049        t
  757 1985 56.25148        t
  758 1990 56.36219        t
  759 1995 56.47262        t
  760 2000 56.58277        t

Now lets say I want to show data labels displaying the "value" field where the time field is equal to 100. Here is what I have:

g<- ggplot(stacked, aes( x = time,  y=value, colour=variable, group= variable) )       +   geom_line()  +
 geom_text(data = stacked[stacked$time == 100,], aes(label = stacked$value))
print(g)

I am getting the error:

Error: Aesthetics must either be length one, or the same length as the dataProblems:time, value, variable, variable

Any ideas?

Thank you.

1 Answer 1

11

The problem is that in your aes(...) call for geom_text you are setting label = stacked$value. You've already specified the data subset (data = stacked[stacked$time == 100,]) so all you need to do here is set aes(label = value) so it takes the value column.

I don't have your test data but take a look at this example where I'm adding labels only to the data points at speeds that are a multiple of 10.

ggplot(cars, aes(x = speed, y = dist)) + 
    geom_point() + 
    geom_text(data = subset(cars, speed %% 5 == 0), aes(label = dist))
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.