2015-04-26 2 views
1

Файл данных является способным к большому числу dput, но я надеюсь, что кто-то сможет определить мою ошибку. Вот история: я произвел следующий небольшой кратный график, используя ggplot со следующим кодом. Все работает отлично.geom_text и грани не работают

ggplot(sm.df, aes(year, N, group = 1)) + geom_line(aes(colour = top10)) + 
facet_wrap(~ shortTitle, ncol=7) + 
theme_bw() + 
theme(panel.grid.major = element_blank(), 
panel.grid.minor = element_blank(), 
axis.text.x = element_text(angle=45, hjust=1, size =8)) + 
scale_x_discrete(breaks=seq(1989, 2020, 8)) + 
ylim(0, 150) 

enter image description here

Теперь я хочу, чтобы комментировать каждый фасет с общим N. Я создал вектор, содержащий х позиций, у позиции, и фактические значения, которые будут нанесены. Итак, в основном, все будет в одной и той же позиции X и Y на каждом сюжете с другой меткой.

'data.frame': 78 obs. of 3 variables: 
$ x1  : num 12.5 12.5 12.5 12.5 12.5 12.5 12.5 12.5 12.5 12.5 ... 
$ y1  : num 130 130 130 130 130 130 130 130 130 130 ... 
$ N.label: int 1650 1456 1348 1216 1086 1035 985 940 888 826 ... 

Но, когда я добавить geom_text(data = x.df, aes(x = x1, y = y1, label = N.label), inheret.aes=FALSE) к сюжету, кажется, как будто каждый ярлык переиздается на каждой грани. Очевидно, я делаю что-то неправильно. enter image description here

Я выложил через SO о том, как комментировать фацетированные участки, но мне не хватает этой проблемы. Был бы очень признателен, если у вас есть какие-то идеи - не очень просто написать некоторые данные, но я думаю, что если понадобится, мне нужно.

ответ

3

This ответ на очень похожий вопрос должен помочь. Должен быть идентификатор, который идентифицирует, какой фасет должен печатать метку. В вашем случае вы должны использовать shortTitle.

Это модифицированный пример использования mtcars и как огранка и маркировка в соответствии с количеством передач

library(ggplot2) 

xpos <- c(10,10,10) 
ypos <- c(Inf,Inf,Inf) 
lab <- c(378,2,50) 
gears <- c(3:5) 
ldata <- data.frame(xpos, ypos, lab, gears) 


ggplot(mtcars) + geom_bar(aes(x=cyl)) + facet_wrap(~gears, ncol=2) + 
    geom_text(data=ldata, aes(x=xpos, y=ypos, 
          label=lab, size=1), 
      vjust=2, parse=FALSE) 

Попробуйте добавить shortTitle в свой список ярлыков. Похоже, это может быть все, что вам нужно. Если вы предоставите подвыборку своего фрейма данных, это поможет вам быть уверенным.

Смежные вопросы