为什么会这样?
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
答案 0 :(得分:31)
某些可能未在可见代码中显示的操作已关闭交互式屏幕设备。可以通过关闭按钮上的“点击”来完成。 (当绘制到文件图形设备时,也可以通过额外的dev.off()来完成。如果粘贴在其末尾有dev,off()的多行绘图命令,可能会发生这种情况。在外部设备的开口处,然后在一个单独的行上有dev.off(),因此它意外关闭了交互设备。)
某些(大多数?)R实现会启动一个自动打开的屏幕图形设备,但如果关闭它,则需要重新初始化它。在Windows上可能是window()
;在Mac上,quartz()
;在Linux机器上,x11()
。您还可能需要发出plot.new()
命令。我只是按照命令。当我收到错误时,我会发出plot.new()
,如果我没有看到情节窗口,我也会发出quartz()
。然后我从头开始使用新的plot(., ., ...)
命令以及对该绘图屏幕图像的任何进一步添加。
答案 1 :(得分:8)
就我而言,我试图在Rmarkdown文件中的两个单独的块中调用plot(x, y)
和lines(x, predict(yx.lm), col="red")
。在按块运行块时它没有问题,但相应的文档不会编织。在我将所有绘图调用移到一个块之后,问题就解决了。
答案 2 :(得分:3)
作为一个新手,我遇到了同样的'问题'。
用新手来说:
当你调用plot()
时,图形窗口会获得焦点而你无法在R中输入更多命令。那时你得出的结论是你必须关闭图形窗口才能返回R.
但是,某些命令(如identify()
)会作用于打开/活动图形窗口。
当identify()
无法找到打开/活动图形窗口时,它会显示此错误消息。
但是,您只需单击R窗口,而无需关闭图形窗口。然后,您可以在R提示符下键入更多命令,如identify()
等。
答案 3 :(得分:1)
我遇到了同样的问题......我的问题是我在剧情(x,y)之后关闭了我的石英窗口。一旦我保持打开状态,以前导致错误的线条就会增加我的情节(就像他们应该的那样)。希望这可能会帮助一些到达此页面的人。
答案 4 :(得分:1)
如果有人使用print
函数(例如,使用mtext),那么首先描绘一个空图:
plot(0,type='n',axes=FALSE,ann=FALSE)
然后使用newpage = F
print(data, newpage = F)
答案 5 :(得分:-1)