OS - 以像素为单位制作特定大小的绘图 window 的独立方法?

OS-independent way of making a plot window of a specific size in pixels?

It seems that this was possible in the past,但看起来 dev.new 不再有 unit 参数。我想要做的就是制作一个大小为 320 x 240 像素的新绘图 window,这样代码就不会 OS 相关,并在 [=27] 中绘制一个像素=].我考虑过使用 par 的参数(例如 dinfinpin),但是 par 的文档表明绘图函数仅采用这些作为建议和 dev.size 的文档表明 din 是 OS 依赖的。 X11 可能会成功,但它的参数都是以英寸为单位的。我真的必须以英寸为单位完成所有工作,然后将其转换为像素吗?或者有更简单的方法吗?

有点hack,但是dev.size接受units所以我们可以推断。我们只是瞬间打开一个显示器并获得以英寸和像素为单位的尺寸。我们将它包裹在一个闭包中,这样我们就可以多次使用它,而只需打开一次设备。

convertInToPx<-function() {
    dev.new()
    insize<-dev.size(units="in")
    pxsize<-dev.size(units="px")
    on.exit(dev.off())
    ratio<-insize/pxsize
    function(width, height, inverse = FALSE) {
        if (inverse)
            ratio<-1/ratio
        list(width = width*ratio[1], height = height*ratio[2])
    }
}
myconvert<-convertInToPx()
#results on my laptop
myconvert(320, 240)
# $width
# [1] 4.444444
#
# $height
# [1] 3.333333
myconvert(4.44444444444, 3.3333333, inverse=TRUE)
# $width
# [1] 320
#
# $height
# [1] 240

您可以根据所需的像素大小计算英寸。