在Letter大小的图纸上指定准确的打印位置

thtygnil  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(144)

我正在使用R,并试图创建一个绘图,其中的元素位于8.5x11页面上的精确位置。例如,我需要一个点,该点距离页面左侧0.25英寸,距离页面顶部0.75英寸。当我将绘图保存为PDF时,该点很接近。但不完全在它应该在的地方。我需要调整par()中的什么设置才能让点和线处于正确的、准确的位置?
下面的代码:

pdf(file = "H:/temp/plots/demo.pdf", paper = 'letter', width=8.5, height = 11,
    pagecentre = FALSE)
par(mar = c(0,0,0,0))
par(mai = c(0,0,0,0))
par(mgp = c(0,0,0))
par(oma = c(0,0,0,0))
par(omi = c(0,0,0,0))
par(pin = c(8.5, 11))
par(xaxs = 'i')
par(yaxs = 'i')
par(xpd=TRUE)
par(pty='m')
plot(x=.25, y=10.75, type = 'p', ylab="", yaxt="n", bty="n",
     xlab="", xaxt = "n",
     xlim = c(0,8.5), ylim = c(0,11))
    lines(x=c(.25,.25), y=c(0,11))
    lines(x=c(0,8.5), y=c(10.75,10.75))
dev.off()

生成具有垂直线、水平线和点的绘图。线和点应在距左侧0.25英寸和距顶部0.75英寸处交叉。这很接近,但放大时,线和点相差不到一英寸。

cfh9epnr

cfh9epnr1#

最主要的是:不要使用paper参数。从?pdf
paper参数设置文件中的“/MediaBox”项,默认为宽乘高。如果它设置为“special”以外的值,则指定大小的设备区域(默认情况下)以纸张大小给定的矩形为中心:如果宽度或高度小于0.1或太大而无法给予0.5英寸的总边距,则将其重置为相应的纸张尺寸减去0.5。
换句话说,如果您指定paper,则总是会插入一些边距,这将使事情变得混乱。
下面是一个最小的代码,应该是足够的,不需要设置一切:

pdf(file="demo.pdf", width=8.5, height=11)
par(mar=c(0,0,0,0), xaxs='i', yaxs='i')
frame()
plot.window(xlim=c(0, 8.5), ylim=c(0, 11))
points(.25, 10.75)
lines(x=c(.25, .25), y=c(0, 11))
lines(x=c(0, 8.5), y=c(10.75, 10.75))
dev.off()

相关问题