以下代碼會生成圖像。沒問題。錯誤:plot.new尚未調用
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()上的幫助頁面顯示如下: 「此函數(frame是plot.new的別名)導致當前繪圖(如果有的話)中的繪圖完成並且前進到新的圖形框架,用於所有高級繪圖功能,當使用多圖區域時也可用於跳過繪圖。「
但是,這真的是我想要的嗎?我的意思是,我想在一個圖形設備中繪製所有東西,那麼爲什麼我想要導致繪圖的完成,除了可能在代碼的末尾。
其他人提出的,問題與RStudio的使用有關,但我不使用RStudio。我將Notepad ++與NppToR結合使用。
此外,有人建議圍繞代碼塊添加{}(沒有工作)。
請幫忙。
如果你在'for'循環之前加上'plot(NA,xlim = c(-500,500),ylim = c(0,100)),該怎麼辦?問題在於'曲線'與曲線有一條曲線,但你沒有開始的曲線。 – Axeman
甜。而已。讓它成爲答案,它也可能幫助其他人。 –
然而,當我不將它保存到一個文件時,仍然有點奇怪爲什麼它會起作用。標準圖形設備是否也不需要這種情節?爲什麼不? –