3

在 Twitter 上被问到这个问题,并认为在这里可能会很好。

使用 制作带标签的并排图时plot_grid(),对于单字母标签,事情会按预期工作:

library(cowplot)

p1 <- ggplot(iris, aes(x = Sepal.Length, fill = Species)) + 
  geom_density(alpha = 0.7) +
  ggtitle("") + theme_minimal()

p2 <- ggplot(iris, aes(x = Sepal.Length, fill = Species)) + 
  geom_density(alpha = 0.7) +
  ggtitle("") +
  scale_fill_grey() + theme_minimal()

plot_grid(p1, p2, labels = c("A", "B"))

在此处输入图像描述

但是,如果我们使用较长的字符串作为标签,标签会向右移动,并且它们移动得越多,字符串越长:

plot_grid(p1, p2, labels = c("Density plot in color", "In gray"))

在此处输入图像描述

如何解决这个问题?

免责声明:我是包的作者。在这里发布这个答案,希望它会有用。

4

1 回答 1

6

hjust参数和label_xin的默认设置针对plot_grid()单字母标签进行了优化,不适用于较长的标签。覆盖设置可以解决问题:

plot_grid(p1, p2, labels = c("Density plot in color", "In gray"),
          hjust = 0, label_x = 0.01)

在此处输入图像描述

特别是,默认hjust设置是hjust = -0.5。这会将标签向右移动相当于其宽度一半的量。这对于单字母标签是有意义的,因为这样我们可以通过设置让字母出现在距左边框半个字母宽度的位置label_x = 0,这将与标签字体大小或用户可能选择的任何其他绘图功能无关。

但是,对于较长的标签,尤其是不同长度的标签,将标签移动其宽度的一半根本没有任何意义。

于 2017-12-09T01:46:53.407 回答