R中的savePlot()错误消息:只能从'windows'设备复制

时间:2015-01-27 14:45:53

标签: r windows rstudio

在Windows 8系统上使用RStudio会出现以下错误消息:

Error in savePlot(filename = "123", type = c("png"), device = dev.cur()) : 
  can only copy from 'windows' devices

如果我在savePlot之前的行中写入windows(),则错误消息消失,但图表为“空”。 如果我使用R而不是RStudio,则问题不存在。

除了“不使用RStudio”之外还有其他解决方案吗? 最好的问候

编辑: 以下是更多原始代码:

#--------------create plot

x <- df$Year
y <- df$Index1970
par(family="serif", font=1, cex=1) 
xrange <- range(x, na.rm=TRUE) 
yrange <- range(y, na.rm=TRUE) 
plot(xrange, yrange, type="n", xlab="Year",
    ylab="Price index, 1970=100" )
lines(x, y, col="black", lwd=3)
title("Belgium Property Prices from 1970-2013")
grid(nx = NULL, ny = NULL, col = "lightgray", lty = "dotted",
     lwd = par("lwd"), equilogs = TRUE)
savePlot(filename="D:/...RPlots/Belgium_Prices_from_1970-2013",
         type=c("wmf"),     
         device=dev.cur(), #type=c("wmf", "png", "jpeg", "jpg", "bmp", "ps", "pdf")
         restoreConsole = TRUE)

我在哪里以及如何使用png和win.metafile函数? 它适用于R,但不适用于RStudio ......

2 个答案:

答案 0 :(得分:5)

您可以使用png功能。例如:

png(filename = "testPlot.png", width = 480, height = 480)
plot(1:10, type = 'l')
dev.off()

filename中,您应该定义绘图的路径。

答案 1 :(得分:0)

当我使用RStudio时,我的第一个绘图具有“ RStudio”类型而不是“ windows”类型。下一个地块具有正确的“窗口”类型。 所以我在我的第一个“保存图”之前调用了这个函数(见下文),它的工作原理是...

#
# Initialise les fenêtres pour RStudio
# La première fenêtre créée n'est pas toujours du type "windows", il faut en recréer une
#
init_fenetres <- function() 
{
  dev.new()
  numFenetre = dev.cur()
  mx = as.matrix(dev.cur())
  if (rownames(mx)[1] != "windows") {
    dev.new()
    numFenetre = dev.cur()
  }
  dev.off( numFenetre )
}