grid.newpage()与plot.new()冲突致PDF多空白页的技术问询
问题:解决R中grid.newpage()与plot.new()同时调用导致PDF生成空白页的问题
我参考示例制作了旋转45度的基础图形,当前需要调用grid.newpage()清除grid视口树,同时调用plot.new()来添加绘图标题,但两者同时调用会在PDF设备中生成额外空白页。
pdf(file = "trialD1.pdf", width = 7, height = 7) { # 此代码属于自定义函数,应适配任意设备 dev <- dev.cur() dev.new() # 辅助设备 plot(1,1) library(gridGraphics) # 旋转45度的解决方案 grid.echo() # 无论尝试何种方式(invisible(), x = NULL, newpage = FALSE)都会无理由重绘 g <- grid.grab() # 即使使用invisible()也会无理由重绘... dev.off() # 关闭辅助设备 dev.set(dev) # 需返回之前的活动设备,因dev.off()可能跳过它 grid.newpage() plot.new() # 使title()可正常工作 pushViewport(viewport(width = 0.7072, height = 0.7072, angle=45)) grid.draw(g) title(main = "Hello world", cex.main = 2) } # 函数结束 dev.off() # 关闭PDF设备
我仅需生成单页PDF,绘图效果如下:
注意:若移除grid.newpage(),仅PDF设备可正常工作;但在Windows绘图设备多次调用时,会因视口树未被清除导致视口堆叠,进而出现异常行为。因此grid.newpage()是绘制新图像时需调用的grid重置函数,现寻求替代方案或解决办法。
内容的提问来源于stack exchange,提问作者Tomas
相关产品推荐
相关产品推荐

