【问题标题】:How to modify the size of the grid.extra output using knitr?如何使用 knitr 修改 grid.extra 输出的大小?
【发布时间】:2021-08-03 08:46:52
【问题描述】:

我对 grid.extra 输出的大小有些困惑。

我有以下 ggplots:

k_uniforme <- covid %>%
  drop_na(PC) %>%
ggplot(aes(x=PC)) + 
  stat_density(kernel = "rectangular",  bw = hsilv, fill="#440154ff") +
  labs(title="Uniform") +
  theme_classic()

k_triangular <-  covid %>%
  drop_na(PC) %>%
ggplot(aes(x=PC)) + 
  stat_density(kernel = "triangular",  bw = hsilv, fill="#7ad151ff") +
  labs(title="Triangular") +
  theme_classic()

k_gaussian <-  covid %>%
  drop_na(PC) %>%
ggplot(aes(x=PC)) + 
  stat_density(kernel = "gaussian",  bw = hsilv, fill="#414487ff") +
  labs(title="Gausiana") +
  theme_classic()

k_epanechnikov <-  covid %>%
  drop_na(PC) %>%
ggplot(aes(x=PC)) + 
  stat_density(kernel = "epanechnikov",  bw = hsilv, fill="#fde725ff") +
  labs(title="Epanechnikov") +
  theme_classic()

k_biweight <-  covid %>%
  drop_na(PC) %>%
ggplot(aes(x=PC)) + 
  stat_density(kernel = "biweight",  bw = hsilv, fill="#fde725ff") +
  labs(title="Epanechnikov") +
  theme_classic()

我想将它们全部打印在一张图中,最好是一整页的大小。

当我对 我的四个地块使用 grid.arrange 函数时,我在编织 pdf 后得到以下输出,这在地块的大小方面是非常可接受的。

gridExtra::grid.arrange(k_uniforme, k_triangular, k_gaussian, k_epanechnikov, ncol=2, nrow=2)

但是,当我想安排所有这些(5 个地块)时,每个地块的大小完全不同,看起来很糟糕。

gridExtra::grid.arrange(k_uniforme, k_triangular, k_gaussian, k_epanechnikov, k_biweight, ncol=2, nrow=3)

我的问题如下: 4plot-arrange 中每个图的默认大小是多少? 有什么方法可以使 5plot-arrange 中每个地块的大小类似于 4-plot 排列中的一个? 以及,如何将 5plot-arrange 的第 5 个图(即第三行中的那个)居中?

我一直在寻找 grid.extra 的任何帮助,但帮助、博客等确实令人困惑。 我尝试生成的文档是使用 rmarkdown 生成的 pdf。

提前谢谢你!

【问题讨论】:

    标签: r r-markdown knitr grid-layout gridextra


    【解决方案1】:

    我已经找到了解决问题的方法。

    我刚刚意识到我在混合一些东西。

    首先,grid.arrange 图形的大小通过我的块中定义的高度和宽度选项的定义进行调整。因此,我使用 fig.width 和 fig.height 正确调整了它,正如 Yuhui 在 RMarkdown Cookbook 中已经解释的那样(有关更多信息,请参阅 herehere)。

    对于我关于如何在 5-plot 排列中将最后一个绘图居中的最后一个问题,我错过了 grid.arrange 函数的 layout_matrix 选项。部分回复herehere

    在布局矩阵中,我定义了想要包含的图的位置。考虑以下几点:

    layout_matrix <- matrix(c(1, 1, 2, 2, 3, 3, 4, 4, NA, 5, 5, NA), ncol = 4, byrow = TRUE)
    

    返回这样的矩阵:

         [,1] [,2] [,3] [,4]
    [1,]    1    1    2    2
    [2,]    3    3    4    4
    [3,]   NA    5    5   NA
    

    数字定义了提供给函数的图(即 1 到 5)及​​其位置。 NA 也可以代替 6,因为我没有第六个情节(我更喜欢 NA,因为它更直观)。

    在 grid.arrange 中,我刚刚将矩阵定义为:

    grid.arrange(k_uniforme, k_triangular, k_gaussian, k_epanechnikov, k_biweight, layout_matrix = layout_matrix)
    

    我的最终代码如下所示:

    {r kernel, fig.cap="Graficas con diferentes densidad Kernel", fig.width=7, fig.height=10}
    
    k_uniforme <- covid %>%
      drop_na(PC) %>%
    ggplot(aes(x=PC)) + 
      stat_density(kernel = "rectangular",  bw = hsilv, fill="#440154ff") +
      labs(title="Uniform") +
      theme_classic()
    
    k_triangular <-  covid %>%
      drop_na(PC) %>%
    ggplot(aes(x=PC)) + 
      stat_density(kernel = "triangular",  bw = hsilv, fill="#7ad151ff") +
      labs(title="Triangular") +
      theme_classic()
    
    k_gaussian <-  covid %>%
      drop_na(PC) %>%
    ggplot(aes(x=PC)) + 
      stat_density(kernel = "gaussian",  bw = hsilv, fill="#414487ff") +
      labs(title="Gausiana") +
      theme_classic()
    
    k_epanechnikov <-  covid %>%
      drop_na(PC) %>%
    ggplot(aes(x=PC)) + 
      stat_density(kernel = "epanechnikov",  bw = hsilv, fill="#fde725ff") +
      labs(title="Epanechnikov") +
      theme_classic()
    
    k_biweight <-  covid %>%
      drop_na(PC) %>%
    ggplot(aes(x=PC)) + 
      stat_density(kernel = "biweight",  bw = hsilv, fill="#F24D29") +
      labs(title="biweight") +
      theme_classic()
    
    layout_matrix <- matrix(c(1, 1, 2, 2, 3, 3, 4, 4, NA, 5, 5, NA), ncol = 4, byrow = TRUE)
    
    grid.arrange(k_uniforme, k_triangular, k_gaussian, k_epanechnikov, k_biweight, layout_matrix = layout_matrix)
    

    我的 pdf 文档看起来很完美:

    Screenshot of pdf output

    【讨论】:

      猜你喜欢
      • 2016-02-04
      • 2017-12-14
      • 1970-01-01
      • 2019-12-27
      • 2013-08-13
      • 2021-05-27
      • 2017-02-08
      • 1970-01-01
      • 2015-12-15
      相关资源
      最近更新 更多