我想将标题与标题grid.arrange
对齐,以便两个图的y轴匹配。如果其中一个图表的标题包含带有下行符(g,j,y,...)的字符,而另一个图表没有图表未对齐。
是否可以选择修复元素的大小,例如在element_text
主题中包括下划线的高度?
另一种方法是直接用ggplotGrob
修改grid-grobs,但这似乎过于复杂。
require(ggplot2)
require(gridExtra)
test <- data.frame(x=1:3, y=1:3)
plot1 <- ggplot(test, aes(x=x, y=y)) +
geom_point() +
ggtitle("asdf")
plot2 <- ggplot(test, aes(x=x, y=y)) +
geom_point() +
ggtitle("asdfg")
grid.arrange(plot1, plot1, nrow=1)
grid.arrange(plot1, plot2, nrow=1)
注意第二个图中绘图区域顶部边框的对齐方式略有不同。在第一个中,两者完全对齐。
答案 0 :(得分:0)
这个hack解决了问题,但我认为它只适用于一行标题。
将lineheight设置为0
并为每个标题添加一个空行:
require(ggplot2)
require(gridExtra)
test <- data.frame(x=1:3, y=1:3)
plot1 <- ggplot(test, aes(x=x, y=y)) +
geom_point() +
theme(
plot.title = element_text(lineheight = 0),
) +
ggtitle("asdf\n")
plot2 <- ggplot(test, aes(x=x, y=y)) +
geom_point() +
theme(
plot.title = element_text(lineheight = 0)
) +
ggtitle("asdfg\n")
grid.arrange(plot1, plot1, nrow=1)
grid.arrange(plot1, plot2, nrow=1)