2015-05-07 7 views
3

Я совершенно новый для ggplot2 (и R), так что несите меня. Используя facet_wrap, я создал многопанельный сюжет. Я хочу пометить их алфавитными буквами (начиная с верхней левой панели с надписью (A) и следующей панели с (b) и т. Д.), Но я не уверен, как это сделать. Я хочу, чтобы это было расположено вне графика (в идеале в левом верхнем углу каждой панели).Добавьте метки к каждому подзаголовку, созданному с использованием facet_wrap (ggplot2)

Я столкнулся с grid.text и ggtitle, но я не уверен, как реализовать их для достижения желаемого результата.

Я натолкнулся на this post и с данными ответами можно вручную пометить каждую фигуру, но я хотел бы, чтобы маркировка выполнялась автоматически, по порядку.

Я был бы глубоко признателен за любые советы/руководства.

+2

Где воспроизводимый пример? –

ответ

4
p <- qplot(displ, hwy, data = mpg) + facet_wrap(~ cyl) + 
    theme(panel.margin=unit(1,"line")) 

library(gtable) 
g <- ggplotGrob(p) 
strips <- g$layout[grep("strip_t", g$layout$name), ] 
titles <- lapply(paste0("(", letters[seq_len(nrow(strips))], ")"), 
       textGrob, x = 0, hjust = 0, vjust = 1) 
g <- gtable_add_grob(g, grobs = titles, 
        t = strips$t, b = strips$b - 2, 
        l = strips$l, r = strips$r) 
grid.newpage() 
grid.draw(g) 

enter image description here

+0

Большое вам спасибо за ваш ответ! «Гроб» для меня так новенький, поэтому мне пришлось обойтись, чтобы узнать больше об этом. Один вопрос. Как правильно настроить положение ярлыков? Мне хотелось бы что-то между «полосами $ b-1» и «stripes $ b-2». Спасибо вам! – Joshlhj

+0

вы, вероятно, захотите поиграть с vjust в textGrob, между 0 и 1 – baptiste

+0

Спасибо. Поскольку мое первоначальное намерение заключалось в том, чтобы сделать ярлыки, а сюжеты кажутся менее переполненными, я попытался расширить размер полосы, и это выглядит лучше (на мой взгляд). Но я тоже буду играть с textGrob. Еще раз спасибо! – Joshlhj

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