是否可以删除用grid.newpage()
创建的最后一页或将图形设备恢复为添加最后一个绘图之前的状态?
背景:
我编写了一个函数,该函数将一个层(例如geom_label
)添加到现有ggplot
上,其位置基于绝对绘图尺寸(例如,英寸/线)而不是数据来确定数据点的位置范围。
过程是:绘制图表,将其打印在当前设备上,测量打印的grob并使用相关统计信息(例如,每块面板的坐标系原点,每英寸或每英寸的相对单位来增强要绘制的数据框)行),创建一个新图,并在其中添加另外一层,并使用这些新变量计算出的aesthetics
,打印出最终图。
主要目的是拥有一个工具,即使在使用构面或分组变量时,该工具也可以使绘图区域内的摘要文本与标签很好地对齐。
问题是,除了进行测量外,使用我没有真正使用的图产生了不必要的页面,并且我没有发现任何grid
或grDevices
方法来删除最后打印的页面。您知道任何此类功能吗?
存在一些潜在的有缺陷的解决方法:不调用ggplot
即可打印新的grid.newpage()
对象(但您不再简单地print(plot)
),或在具有相同参数的临时设备中绘制第一个图作为目标设备(但不是通用设备,并且每个设备需要使用不同的方法;例如,.png和multipade.PDF的解决方案会有所不同)。
答案 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)