jebyrnes
jebyrnes

Reputation: 9342

Using annotate to add different annotations to different facets

I'm trying to add panel labels to different facets in a plot. I want them to be 1:7, but, the following code

d <- ggplot(diamonds, aes(carat, price, fill = ..density..)) +
     xlim(0, 2) + stat_binhex(na.rm = TRUE) + opts(aspect.ratio = 1)

d1<-d + facet_wrap(~ color)

d1+annotate("text", x=0.25, y=1.5e+04, label=1:7)

yields

Error: When _setting_ aesthetics, they may only take one value. Problems: label

Now, I can supply a single value and get that replicated across all facets. But how can I have different labels in different facets using annotate()?

Upvotes: 21

Views: 12431

Answers (1)

Brian Diggs
Brian Diggs

Reputation: 58875

With annotate, you can't. But by setting up a data.frame and using it as the data source for a geom_text, it is easy (with a few bookkeeping aspects).

d1 + geom_text(data=data.frame(x=0.25, y=1.5e+04, label=1:7, 
                               color=c("D","E","F","G","H","I","J")), 
               aes(x,y,label=label), inherit.aes=FALSE)

enter image description here

Upvotes: 28

Related Questions