2016-07-01 57 views
4

enter image description here我想用ggplot繪製兩個並排的圖。但是,由於兩個數據集包含不同數量的觀測值,網格的寬度會自動調整,因此兩個地塊的總寬度相同。修復ggplot2中網格的寬度

但是,我需要在圖上每個垂直線段和不同總寬度之間具有相同的寬度,以反映兩種情況下的不同樣本大小。

在此先感謝您的任何建議。

這裏是我的代碼

dat1 <- data.frame(a=1:10,b=letters[1:10]) 
dat2 <- data.frame(a=1:6, b=letters[12:17]) 

require(gridExtra) 
plot1 <- ggplot(dat1, aes(x=b, y=a)) + geom_point(size=4) 
plot2 <- ggplot(dat2, aes(x=b, y=a)) + geom_point(size=4) 
grid.arrange(plot1, plot2, ncol=2) 
+2

'grid.arrange(plot1,plot2,ncol = 2,widths = c(10,6))' – eipi10

+2

此外,是不是'gridExtra'庫和'grid.extra'庫嗎? –

+0

非常感謝,我非常感謝幫助; – ZMacarozzi

回答

2

可以在grid.arrange()設置widths。以下內容將根據每個數據幀中的層數自動調整圖的寬度。

我改名的變量,使該行的名稱和元素是不能重複:

dat1 <- data.frame(A1=1:10,B1=letters[1:10]) 
dat2 <- data.frame(A2=1:6, B2=letters[12:17]) 

加載必要的庫:

require(gridExtra) 
require(ggplot2) 

現在劇情:

plot1 <- ggplot(dat1, aes(x=B1, y=A1)) + geom_point(size=4) 
plot2 <- ggplot(dat2, aes(x=B2, y=A2)) + geom_point(size=4) 

grid.arrange(plot1, plot2, ncol=2, 
     widths=c(nlevels(dat1$B1),nlevels(dat2$B2))) 

,讓你如下圖:

enter image description here

正如您所看到的,每個等級在兩個圖上都彼此等距。

+0

謝謝這是偉大的 – ZMacarozzi