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
的参数(例如 din
、fin
和 pin
),但是 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
您可以根据所需的像素大小计算英寸。
It seems that this was possible in the past,但看起来 dev.new
不再有 unit
参数。我想要做的就是制作一个大小为 320 x 240 像素的新绘图 window,这样代码就不会 OS 相关,并在 [=27] 中绘制一个像素=].我考虑过使用 par
的参数(例如 din
、fin
和 pin
),但是 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
您可以根据所需的像素大小计算英寸。