2016-01-23 256 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

不完全 - 我试图对齐情节框架的左边缘。不过,谢谢你的演示。 –