2015-05-07 102 views
3

對於ggplot2(和R)我很新,所以請耐心等待。使用facet_wrap,我創建了一個多面板圖。我想用字母來標記它們(從(A)標記的左上角面板開始,下一個面板用(b)等等)。但我不知道如何去做這件事。我希望它位於情節之外(理想情況是在每個面板的左上角)。向使用facet_wrap(ggplot2)創建的每個子圖添加標籤

我碰到了grid.textggtitle,但我不確定我將如何實現這些以獲得理想的結果。

我遇到了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

非常感謝您的回答! 'grob'對我來說太新了,所以我不得不繞過去了解更多。一個問題,但。如何微調標籤的位置?我想在「strip $ b-1」和「strip $ b-2」之間插入一些東西。謝謝! – Joshlhj

+0

你可能想用vjust在textGrob中玩0到1 – baptiste

+0

謝謝。因爲我的初衷是爲了讓標籤和情節感覺不那麼緊張,所以我試圖擴大試紙尺寸,看起來更好(在我看來)。但我也會玩弄textGrob。再次感謝! – Joshlhj

相關問題