2013-08-19 3 views
0

Как добавить ярлыки по отдельному вектору на графике geom_bar()?Добавить метки ggplot2

a<-as.POSIXlt("2013-07-01 00:00:00",origin = "1960-01-01",tz="GMT") 
b<-as.POSIXlt("2013-07-08 00:00:00",origin = "1960-01-01",tz="GMT") 

week1<-sample(seq(as.numeric(a),by=60*60,length.out=200),200,T) 
week2<-sample(seq(as.numeric(b),by=60*60,length.out=200),200,T) 
times<-c(week1,week2) 
class(times)<-c("POSIXt","POSIXct") 
times<-as.POSIXlt(times,origin = "1960-01-01",tz="GMT") 
key<-sample(LETTERS[1:3],200,T) 
df<-data.frame(times=times,order=factor(rep(1:2,each=100)), key=key) 

p<-ggplot(df, aes(x=key, y=..count.. ,fill=key)) 
p<-p + geom_bar() 
p<-p + facet_wrap(~ order,ncol=2) 
p<-p + coord_flip() 
p 

Я хотел бы добавить номер каждого ключевого значения, которое представлено df1 $ у:

df1<-ddply(df, .(key,order), summarize, y=length(key)) 
p<-p + geom_text(aes(label=df$1y), vjust=0) 

ответ

1

Вы можете добавить еще один слой с другим источником данных, используя data аргумент. Главное, что слои отображаются по оси y по-разному - geom_bar() отображается по счету, тогда как geom_text() отображается значением y в df1 (я предполагаю - это может быть какое-то другое значение, но это кажется логичным). Это означает, что вам необходимо указать y = внутри каждого geom_ вызова:

p <- ggplot(df, aes(x = key, fill = key)) 
p1 <- p + geom_bar(aes(y = ..count..)) + facet_wrap(~ order, ncol = 2) + 
    coord_flip() 
p2 <- p1 + geom_text(data = df1, aes(y = y + 5, label=y), vjust=0) 
p2 

enter image description here