2016-01-23 282 views
1

我想左對齊g中的ggplot2圖形的垂直陣列中的繪圖面板。y軸刻度標籤的最大寬度因圖形而異,因此打破了此對齊方式,如下面的代碼示例所示。如何在R中設置ggplot2中y軸刻度標籤的寬度?

我已經嘗試過各種情節,面板和axis.text保證金選項沒有成功,並且一直未能找到控制y軸刻度標籤寬度的選項。

引導讚賞。

#install.packages(c("ggplot2", "gridExtra", "reshape2"), dependencies = TRUE) 
require(ggplot2) 
require(gridExtra) 
require(reshape2) 

v <- 1:5 
data1 <- data.frame(x=v, y=v) 
data2 <- data.frame(x=v, y=1000*v) 
plot1 <- ggplot(data=melt(data1, id='x'), mapping=aes_string(x='x', y='value')) + geom_line() 
plot2 <- ggplot(data=melt(data2, id='x'), mapping=aes_string(x='x', y='value')) + geom_line() 
grid.arrange(plot1, plot2, ncol=1) 
+0

能解釋一下你在找什麼呢?也許可以說明你想要的行爲? –

+0

我試圖對齊每個情節框架的左邊緣,如下面由MLavoie和Didzis Elferts提供的解決方案中所示。感謝您將包裝說明預先添加到我的代碼中。 –

回答

4

您可以使用功能plot_grid()從庫cowplot對準地塊

# install.packages(c("ggplot2", "cowplot", "reshape2"), dependencies = TRUE) 
library(cowplot) 
plot_grid(plot1,plot2,ncol=1,align="v") 

enter image description here

+0

謝謝。這正是我所尋找的,並且在應用於我的測試代碼(顯示)和我的實際代碼(未顯示)時正確工作。 –

+0

這將刪除默認的ggplot主題和座標軸網格,但對齊方式可以正常工作。 – arun

2

將這個東西我喜歡你的工作:

data1$Data <- "data1" 
data2$Data <- "data2" 
data3 <- rbind(data1, data2) 
ggplot(data=data3, aes(x=x, y=y)) + geom_line() + facet_grid(Data~., scales = "free_y") 

enter image description here

+0

感謝您的建議,在某些情況下這可能是一個很好的解決方案。在我的實際代碼中,而不是我提供的示例中,垂直圖形陣列的每個成員都非常不同,所以此解決方案可能不適合我的特殊情況。 –

0

這樣嗎? (下面的代碼)

enter image description here

# install.packages(c("ggplot2", "gridExtra", "reshape2"), dependencies = TRUE) 
require(ggplot2) 
require(gridExtra) 
require(reshape2) 

v <- 1:5 
data1 <- data.frame(x=v, y=v) 
data2 <- data.frame(x=v, y=1000*v) 
plot1 <- ggplot(data=melt(data1, id='x'), mapping=aes_string(x='x', y='value')) + geom_line() + scale_y_continuous(breaks=NULL) 
plot2 <- ggplot(data=melt(data2, id='x'), mapping=aes_string(x='x', y='value')) + geom_line() + scale_y_continuous(breaks=c(1000,2000)) 
grid.arrange(plot1, plot2, ncol=1) 
+0

不完全 - 我試圖對齊情節框架的左邊緣。不過,謝謝你的演示。 –