我想在R中的ggplot2图的垂直数组中对齐绘图面板.Y轴刻度标签的最大宽度因图形而异,打破了这种对齐,如下面的示例代码所示。
我尝试了各种plot,panel和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 :(得分:4)
您可以使用库plot_grid()
中的函数cowplot
来对齐图
# install.packages(c("ggplot2", "cowplot", "reshape2"), dependencies = TRUE)
library(cowplot)
plot_grid(plot1,plot2,ncol=1,align="v")
答案 1 :(得分: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")
答案 2 :(得分:0)
# 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)