修复了ggplot2中文本元素的高度

时间:2018-03-30 10:58:41

标签: r ggplot2

我想将标题与标题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)

注意第二个图中绘图区域顶部边框的对齐方式略有不同。在第一个中,两者完全对齐。

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)