2017-10-13 163 views
0

我正在準備一張圖表,我有客戶的要求將相同的圖例放在頂部和底部。使用ggplot我可以把它放在頂部或底部。但我不知道在兩個地方都有複製選項。在Ggplot2中重複顯示兩次相同的圖例

我試着把legend.position作爲c('top','bottom'),但是這給了我錯誤,我知道是否應該給出錯誤。

它可以與其他庫完成嗎?我想要兩次相同的傳說在頂部和底部?

拿這個代碼實例

library(ggplot2) 
bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot() 
bp <- bp + theme(legend.position="bottom") 
bp 
+0

您可以創建一個單獨的ggplot圖例和ggplot圖形,您可以將它們組合並排列成一個複合圖形。如果您需要詳細信息,請提供可重現的示例。 – Djork

+0

@Djork - 完成。以此示例爲例,並在頂部添加圖例。 – vrajs5

回答

1

你有被繪製時使用GGPLOT2中間圖形對象(grobs)工作。

我抓住一個在StackOverflow中流動的函數來提取圖例,並將其放入現在位於CRAN中的包中。

這裏有一個解決方案:

library(lemon) 
bp <- bp + theme(legend.position='bottom') 
g <- ggplotGrob(bp) 
l <- g_legend(g) 
grid.arrange(g, top=l) 

g_legend接受兩個GROB版本(不能用GGPLOT2對象進行操作)和普通GGPLOT2對象。使用ggplotGrob是單向街道;一旦轉換,你不能將其轉換回ggplot2。但是,正如在這個例子中,我們保留了原始的ggplot2對象。 ;)