2016-08-05 49 views
3

短版: 如何獲得axis.text和axix.title之間的差額的價值?獲取axis.text和axis.title之間的臨界值

龍版本: 我試圖合併三個ggplot圖形。規模應該是一致的,所以我使用rbind(與ggplotGrob)來對齊前兩個圖形。但是最後一個有一些方面,所以三個都不可能使用這個解決方案。

我的想法是在第三個圖形中手動設置axis.title和axis.text之間的空間(這可以使用margin和element_text來完成)。 但是,要做到這一點,我應該在前兩個圖形之一中獲取此邊距的值。我相信這個信息在ggplotGrob中可用,但我不知道在grob結構中檢索這個值的路徑。

假的代碼示例:

library(ggplot2) 
library(gridExtra) 

a <- ggplotGrob(ggplot(iris[iris$Species != "setosa",], aes(x=Sepal.Length, y=Petal.Width*100000, color=Species)) + geom_line() + theme(legend.position="none")) 

b <- ggplotGrob(ggplot(iris[iris$Species != "setosa",], aes(x=Sepal.Length, y=Petal.Length, color=Species)) + geom_line() + theme(legend.position="none")) 

c <- ggplotGrob(ggplot(head(mpg, 100), aes(class)) + geom_bar() + facet_grid(.~manufacturer, scales="free_x")) 

g1 <- rbind(a, b, size="first") 
grid.arrange(g1, c, ncol=1) 

當前的結果: 前兩個圖形與繪圖區一致,但不是最後一個。 result plot

預期結果: 所有三個圖形的繪圖區域對齊。

+0

本主題可能幫助你:http://stackoverflow.com/questions/38637261/perfectly-align-several-plots – bVa

+0

謝謝@bVa! –

回答

2

您可以對齊地塊不明確擔心使用ggarrangeegg包保證金大小(@ BVA的鏈接答案的一個使用此功能):

#devtools::install_github("baptiste/egg") 
library(egg) 
library(ggplot2) 

a <- ggplot(iris[iris$Species != "setosa",], aes(x=Sepal.Length, y=Petal.Width*100000, color=Species)) + geom_line() + theme(legend.position="none") 

b <- ggplot(iris[iris$Species != "setosa",], aes(x=Sepal.Length, y=Petal.Length, color=Species)) + geom_line() + theme(legend.position="none") 

c <- ggplot(head(mpg, 100), aes(class)) + geom_bar() + facet_grid(.~manufacturer, scales="free_x") 

ggarrange(a,b,c, ncol=1) 

enter image description here

+0

這對我有用,謝謝eipi10 –