Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using annotate to add different annotations to different facets

Tags:

r

ggplot2

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

like image 954
jebyrnes Avatar asked Jun 13 '12 20:06

jebyrnes


1 Answers

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

like image 66
Brian Diggs Avatar answered Oct 14 '22 23:10

Brian Diggs