2011-08-22 95 views
29

爲什麼會發生這種情況?plot.new尚未被稱爲

plot(x,y) 
yx.lm <- lm(y ~ x) 
lines(x, predict(yx.lm), col="red") 

錯誤plot.xy(xy.coords(x, y), type = type, ...)plot.new還沒有被稱爲尚未

+1

作品。請向我們展示'str(x)'和'str(y)'。 – NPE

+3

你如何期待我們評論具體細節?我們沒有'x',''',也沒有用於擬合線性模型的代碼。請幫助我們來幫助你。 –

回答

23

一些行動,很可能在可見的代碼不表示,已經關閉了交互式屏幕設備。這可以通過在關閉按鈕上「點擊」來完成。 (當繪製到文件圖形設備時,也可以通過額外的dev.off()來完成。如果您粘貼一個多行繪圖命令,該命令的最後有一個dev,off()但錯誤在外部設備的開啓處出現,但之後將dev.off()放在單獨的線路上,以致意外關閉交互式設備)。

一些(大多數?)R實現將啓動一個自動打開的屏幕圖形設備,但是如果關閉它,則需要重新初始化它。在Windows上可能是window();在Mac上,quartz();並在Linux上,x11()。您還可能需要發出一個plot.new()命令。我只是按照訂單。當我得到這個錯誤時,我發出plot.new(),如果我沒有看到一個繪圖窗口,我也發出quartz()。然後,我從一開始就從一個新的plot(., ., ...)命令開始,並對該繪圖屏幕圖像進一步添加。

+6

這個答案類似於「如果有疑問,請重新格式化您的硬盤驅動器」的建議。沒有必要添加不需要的plot.new()調用。 OP(顯然)忽略了他的lm()調用,很可能其他一些關閉的調用是plot窗口。 plot.new()不會「重新附加」到現有的x vs y圖上,因此他的lines()調用不會寫入該圖。 –

+0

如果它最壞是無害的,那麼它與您的示例不相似,甚至與rm(list = ls())類似。 –

+0

它並不總是無害的。正如我所指出的那樣,plot(x,y); plot.new(); lines(...)將*不*執行OP所要求的操作 –

1

我有同樣的問題...我的問題是,我正在關閉我的石英窗後的情節(x,y)。一旦我保持打開狀態,之前導致錯誤的行就會將事情添加到我的情節中(就像他們應該做的那樣)。希望這可能會幫助一些到達此頁面的人。

1

作爲一個新手,我面臨着同樣的問題。

在新手而言: 當你調用plot(),圖形窗口獲得焦點,你不能進入進一步的命令爲R.當你決定你必須關閉圖形窗口返回R. 然而也就是說,一些命令,如identify(),在打開/活動圖形窗口上執行。 當identify()找不到打開/活動圖形窗口時,它會顯示此錯誤消息。

但是,您只需單擊R窗口而不關閉圖形窗口

plot(0,type='n',axes=FALSE,ann=FALSE) 

然後打印:然後可以如果有人使用print功能(例如,與多行文字),則首先描繪空積於R提示符下鍵入更多的命令,如identify()

0

newpage = F

print(data, newpage = F) 
5

以我爲例,我試圖打電話plot(x, y)lines(x, predict(yx.lm), col="red")在Rmarkdown文件中的兩個單獨的塊。它通過塊運行塊時沒有問題,但相應的文檔不會編織。將所有調用調用移入一個塊後,問題得到解決。

+2

如果嘗試在同一個塊內分別運行這些行,而不是執行整個事件,那麼您也會得到該錯誤。我想它調用'dev.off()'在引擎蓋下的某個地方? – Gabriel

0

只有部分函數運行時會出現plot.new()錯誤。

請查看附件中的示例更正錯誤 錯誤....當abline在運行,沒有以上 enter image description here 無差錯的圖()...當在應用到兩個短向量兩種情節和abline一起跑這裏 enter image description here