You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:05:14