错误:plot.new尚未调用

时间:2017-03-06 10:16:28

标签: r plot

以下代码生成图像。没问题。

change <- function(score, d, k, p) {k*(score - 1/(1+k^(d/p)))}
parameters <- c(10:110)
colorshelf <-rainbow(length(parameters), start=1/6) #yellow is low
for(i in seq_along(parameters)) {
    curve(change(score=1, d=x, k=parameters[i], p=-800), from=-500, to=500, add=T, ylim=c(0, 100), col=colorshelf[i], xlab="rating difference", ylab="gain for winning")
}
legend.index <- round(quantile(seq_along(parameters)))
legend.param <- legend.index + min(parameters)
legend.color <- colorshelf[legend.index]
legend("right", title="k-factor", lty=c(1,1), legend=legend.param, col=legend.color)

现在我想将图像保存到具有指定分辨率的文件中。所以我补充说:

png(filename="gain by ratingdiff.png", res=30, width = 1000, height = 1000)

dev.off()

代码块之前和之后。但后来我得到两个错误,抱怨 plot.new还没有被调用

我知道这个问题出现了一百万次。 stackoverflow上有很多这方面的帖子。但这些都没有真正帮助我。我尝试在代码中的不同位置添加plot.new()。但这没有帮助。

plot.new()的帮助页面显示: &#34;此函数(frame是plot.new的别名)导致完成当前绘图中的绘图(如果有)并前进到新的图形框架。这用于所有高级绘图功能,也可用于在使用多图形区域时跳过绘图。 &#34;

但这真的是我想要的吗?我的意思是,我想在一个图形设备中绘制所有内容,为什么我想要完成绘图,除了可能在代码的末尾。

其他人提出,问题与RStudio的使用有关,但我不使用RStudio。我将Notepad ++与NppToR结合使用。

另外,有人建议在代码块周围添加{}(不起作用)。

请帮忙。

1 个答案:

答案 0 :(得分:2)

在使用curve()功能之前,需要运行plot()。这就是保存图表时遇到问题的原因。

跑步前:

    for(i in seq_along(parameters)) {
      curve(change(score=1, d=x, k=parameters[i], p=-800), from=-500, to=500, add=T, ylim=c(0, 100), col=colorshelf[i], xlab="rating difference", ylab="gain for winning")}

您需要运行plot(),以便为重新制作图片提供有用的边距,标签和信息。