2017-10-09 75 views
1

可再現例子的中心可以在該教程包cowplot找到。對齊共享傳說的情節網格(與cowplot)

https://cran.r-project.org/web/packages/cowplot/vignettes/shared_legends.html

複製示例代碼:

library(ggplot2) 
library(cowplot) 
#down-sampled diamonds data set 
dsamp <- diamonds[sample(nrow(diamonds), 1000), ] 

# Make three plots. 
# We set left and right margins to 0 to remove unnecessary spacing in the 
# final plot arrangement. 
p1 <- qplot(carat, price, data=dsamp, colour=clarity) + 
    theme(plot.margin = unit(c(6,0,6,0), "pt")) 
p2 <- qplot(depth, price, data=dsamp, colour=clarity) + 
    theme(plot.margin = unit(c(6,0,6,0), "pt")) + ylab("") 
p3 <- qplot(color, price, data=dsamp, colour=clarity) + 
    theme(plot.margin = unit(c(6,0,6,0), "pt")) + ylab("") 

# arrange the three plots in a single row 
prow <- plot_grid(p1 + theme(legend.position="none"), 
      p2 + theme(legend.position="none"), 
      p3 + theme(legend.position="none"), 
      align = 'vh', 
      labels = c("A", "B", "C"), 
      hjust = -1, 
      nrow = 1 
      ) 
legend_b <- get_legend(p1 + theme(legend.position="bottom")) 

# add the legend underneath the row we made earlier. Give it 10% of the height 
# of one plot (via rel_heights). 
p <- plot_grid(prow, legend_b, ncol = 1, rel_heights = c(1, .2)) 
p 

該實施例示出了其中的圖例被吸入與網格對齊的左下方的曲線圖。 但是,它使用的是不同的,因爲傳說中,然後拉伸對準情節的底部中心。以下是幾個月前由我的個人代碼生成的示例。 https://s1.postimg.org/8pf2en1zen/Untitled.png(上傳工具目前沒有工作對我來說)

在任一套餐變化的未知量之後重新運行我的舊代碼提供對齊左下角的傳奇人物(如教程還顯示,從上述第三圖): https://s1.postimg.org/3agjw7n9gf/Untitled2.png

問題是如何調整代碼以繪製圖例對齊底部中心。

回答

1

你可以設置legend_b這樣:

legend_b <- get_legend(p1 + theme(legend.position=c(0.3,0.8),legend.direction = "horizontal")) 

一個更好的辦法:

legend_b <- get_legend(p1 + theme(legend.direction = "horizontal",legend.justification="center" ,legend.box.just = "bottom")) 
+0

謝謝。我猜,這確實需要對其他圖例大小進行「試驗和錯誤」。 – nouse

+0

'legend_b < - get_legend(p1 + theme(legend.position =「none」,legend.direction =「horizo​​ntal」))' 這對我也適用。在get_legend –

+0

錯誤(P1 +主題(legend.position = 「無」,legend.direction = 「水平」)): 劇情必須包含一個圖例 – nouse