在 R 中的 cowplot 包中将 2 行中的垂直 3 个图对齐

问题描述

我想对齐第 1 行的垂直绘图和第 2 行的绘图。不管我多么努力,但它并没有让我对齐。

enter image description here

有什么想法吗?

type numbers = [50,100,200,300,400,500];
interface INumbers {
    numbersType:numbers;
}

解决方法

此处关于 ggplot 的术语是 绘图 对齐得很好 - 面板 未对齐。 “面板”表示 x 轴和 y 轴之间的区域,“绘图”被认为是面板占据的整个区域 + 轴刻度、轴文本和轴标题。

为什么这很重要?好吧,plot_grid() 对齐所有绘图,但不对齐面板。由于 p1 的 y 轴文本比 p3 的 y 轴文本更长,因此 p1 中面板左侧的区域也更宽。当您将 p1p3 的左侧对齐时,表示 p3 的面板在 p1 的左侧。

解决这个问题的简单方法是在 p3 上添加一点边距。通过使用 theme(plot.margin),我们可以在 p3 的左侧添加一些空间,以便 p3 中面板左侧的区域与 p1 中的区域大致相似。不幸的是,除了反复试验之外,以任何其他方式做到这一点并不是很简单。您必须添加一些边距并再次绘制以查看它是太多还是太少。最后,结果虽然有效。同样,我在 p3 的右侧添加了一些边距,以使该面板的右侧部分与 p2 面板的右侧对齐。

要修复,p3 的代码现在如下所示:

p3 <- ggplot(mtcars,aes(wt,mpg)) +
  geom_point() +
  theme(plot.margin = margin(l=44,t=0,b=0,r=6,'pt'))

enter image description here