R中的png / jpeg / svg / tiff / bmp设备有问题

时间:2013-10-24 09:57:35

标签: r graphics

我只是想将一个情节保存到文件中,看起来它失败了一系列R设备:

getgrob = function(x, y) {
    require(grid)
    x = 1:10
    y = rnorm(10)
    plotvp = plotViewport(c(5, 5, 3, 3), name='plotvp')
    datavp = dataViewport(x, y, name='datavp')
    datapts = pointsGrob(
                         x, y, pch=20,
                         size=unit(2.3, 'mm'),
                         name='datapts',
                         gp=gpar(col='black')
                         )
    xaxis = xaxisGrob()
    yaxis = yaxisGrob()
    xlab = textGrob('X Label', y=unit(-3, 'lines'), name='xlab')
    ylab = textGrob('Y Label', x=unit(-3, 'lines'), rot=90, name='ylab')
    plotbox = rectGrob()
    dataplot = gTree(children=gList(datapts,
                                    xaxis, yaxis,
                                    xlab, ylab,
                                    plotbox),
                     vp=datavp, name='dataplot')
    wholeplot = gTree(children=gList(dataplot),
                      vp=plotvp, name='wholeplot')
    wholeplot
}

pdf('/tmp/a.pdf')
mygrob = getgrob(1:10, rnorm(10))
grid.draw(mygrob)
dev.off()
png('/tmp/a.png')
mygrob = getgrob(1:10, rnorm(10))
grid.draw(mygrob)
dev.off()
jpeg('/tmp/a.jpg')
mygrob = getgrob(1:10, rnorm(10))
grid.draw(mygrob)
dev.off()
tiff('/tmp/a.tiff')
mygrob = getgrob(1:10, rnorm(10))
grid.draw(mygrob)
dev.off()
bmp('/tmp/a.bmp')
mygrob = getgrob(1:10, rnorm(10))
grid.draw(mygrob)
dev.off()
svg('/tmp/a.svg')
mygrob = getgrob(1:10, rnorm(10))
grid.draw(mygrob)
dev.off()

我得到的只是一个带轴和刻度的空白区域:

enter image description here

但是pdf设备仍然有效。我在这里错过了什么吗?

这是版本信息:

R version 3.0.1 (2013-05-16) -- "Good Sport"
Copyright (C) 2013 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

1 个答案:

答案 0 :(得分:3)

不同的设备对gpar参数有不同的默认值;特别是rectGrob可以是白色或透明的。首先尝试绘制,而不是最后绘制,或明确指定fill = NA:rectGrob(gp=gpar(fill=NA))