R 锁定部分网格上的纵横比

R 锁定部分网格上的纵横比,r,ggplot2,gridextra,r-grid,R,Ggplot2,Gridextra,R Grid,我正在尝试编写一个函数,其中我们公司的徽标会自动添加到导出时的每个图形中,作为函数的一部分,位于标题和副标题旁边。每个输出的尺寸将取决于当时的需求,因此,不幸的是,设置一个大小并没有特别大的帮助 为了做到这一点,我已经生成了一系列网格来将所有东西放在一起,如下所示(使用iris数据集) 库(数据集) 图书馆(tidyverse) 图书馆(gridExtra) 图书馆(网格) 图书馆(png) 网格图形有绝对和相对单位的概念。无论视口大小如何,绝对单位(如“厘米”、“英寸”、“磅”)始终保持不变。

我正在尝试编写一个函数,其中我们公司的徽标会自动添加到导出时的每个图形中,作为函数的一部分,位于标题和副标题旁边。每个输出的尺寸将取决于当时的需求,因此,不幸的是,设置一个大小并没有特别大的帮助

为了做到这一点,我已经生成了一系列网格来将所有东西放在一起,如下所示(使用iris数据集)

库(数据集)
图书馆(tidyverse)
图书馆(gridExtra)
图书馆(网格)
图书馆(png)

网格图形有绝对和相对单位的概念。无论视口大小如何,绝对单位(如“厘米”、“英寸”、“磅”)始终保持不变。相对单位(称为“空”)根据需要展开或收缩。在常规ggplot2对象中,打印面板以相对单位指定,而面板周围的各种元素(如标题、轴标记等)以绝对单位指定

您可以使用
unit()
函数指定绝对或相对单位:

> library(grid)
> unit(1, "cm")
[1] 1cm
> unit(1, "null")
[1] 1null
在您的情况下,
grid.arrange
heights
参数可以接受任意网格单位对象,因此您只需为顶部高度指定一个绝对单位:

grid.arrange(TopGrid, arrangeGrob(plot), heights = unit(c(1, 1), c("cm", "null")))


我认为这需要您选择一种支持这种属性规范的输出格式,比如pdf?我怀疑是否有可能使用png、jpeg或tiff。也许您可以创建某种伪设备,将固定大小的图形与
其他东西合并?
grid.arrange(TopGrid, arrangeGrob(plot), heights = unit(c(1, 1), c("cm", "null")))