如何从grid / grDevices删除最后一页?

时间:2018-07-17 12:39:43

标签: r ggplot2 r-grid

是否可以删除用grid.newpage()创建的最后一页或将图形设备恢复为添加最后一个绘图之前的状态?

背景:

我编写了一个函数,该函数将一个层(例如geom_label)添加到现有ggplot上,其位置基于绝对绘图尺寸(例如,英寸/线)而不是数据来确定数据点的位置范围。

过程是:绘制图表,将其打印在当前设备上,测量打印的grob并使用相关统计信息(例如,每块面板的坐标系原点,每英寸或每英寸的相对单位来增强要绘制的数据框)行),创建一个新图,并在其中添加另外一层,并使用这些新变量计算出的aesthetics,打印出最终图。

主要目的是拥有一个工具,即使在使用构面或分组变量时,该工具也可以使绘图区域内的摘要文本与标签很好地对齐。

问题是,除了进行测量外,使用我没有真正使用的图产生了不必要的页面,并且我没有发现任何gridgrDevices方法来删除最后打印的页面。您知道任何此类功能吗?

存在一些潜在的有缺陷的解决方法:不调用ggplot即可打印新的grid.newpage()对象(但您不再简单地print(plot)),或在具有相同参数的临时设备中绘制第一个图作为目标设备(但不是通用设备,并且每个设备需要使用不同的方法;例如,.png和multipade.PDF的解决方案会有所不同)。

1 个答案:

答案 0 :(得分:1)

网格单元已经可以将对象放置在面板中的固定位置上,

library(ggplot2)
library(grid)

ag <- grobTree(textGrob('+', x = unit(3,"cm"), y=unit(1,'npc') - unit(1,'in')))

qplot(1:10,1:10) +
  annotation_custom(ag)