plot.new还没有被调用

opt*_*orm 41 plot r

为什么会这样?

plot(x,y)
yx.lm <- lm(y ~ x)
lines(x, predict(yx.lm), col="red")
Run Code Online (Sandbox Code Playgroud)

错误plot.xy(xy.coords(x, y), type = type, ...): plot.new尚未调用

42-*_*42- 35

某些动作(很可能未在可见代码中表示)已关闭交互式屏幕设备.可以通过关闭按钮上的"点击"来完成.(当绘制到文件图形设备时,也可以通过额外的dev.off()来完成.如果粘贴在其末尾有dev,off()的多行绘图命令,可能会发生这种情况.在外部设备的开口处但是然后在单独的线路上有dev.off(),因此它意外地关闭了交互设备).

一些(大多数?)R实现将启动自动打开的屏幕图形设备,但如果关闭它,则需要重新初始化它.在Windows上可能是window(); 在Mac上quartz(); 在Linux机器上,x11().您可能还需要发出plot.new()命令.我只是按照命令.当我发出错误时,我会发出错误plot.new(),如果我没有看到情节窗口,我quartz()也会发出.然后,我从一开始就使用新plot(., ., ...)命令和该绘图屏幕图像的任何进一步添加.

  • 这个答案类似于"如果有疑问,重新格式化您的硬盘"建议.无需添加不需要的plot.new()调用.OP(显然)忽略了他的lm()调用,并且很可能其他一些关闭的调用是情节窗口.plot.new()不会"重新附加"到x vs y的现有图,所以他的lines()调用不会写入该图. (7认同)
  • 它并不总是无害的。正如我指出的那样,plot(x,y); plot.new(); lines(...)将*不*执行OP想要的操作 (2认同)
  • 在linux上,我使用了plot.new(). (2认同)

Jel*_*ina 12

就我而言,我试图打电话plot(x, y)lines(x, predict(yx.lm), col="red")在Rmarkdown文件中的两个单独的块.它通过块运行块时没有问题,但相应的文档不会编织.在我将一个块内的所有绘图调用移动后,问题得到了解决.

  • 如果您尝试在同一块中单独运行行,而不是执行整个行,则也会收到错误.我想它会在引擎盖下的某个地方调用`dev.off()` (3认同)

小智 6

作为一个新手,我面临着同样的“问题”。

用新手的话来说:当您调用 时plot(),图形窗口获得焦点,并且您无法在 R 中输入更多命令。此时您得出结论,必须关闭图形窗口才能返回到 R。但是,某些命令(例如 )会在identify()打开时起作用/活动图形窗口。当identify()找不到打开/活动的图形窗口时,它会给出此错误消息。

但是,您只需单击 R 窗口即可,而无需关闭图形窗口。然后您可以在 R 提示符下键入更多命令,例如identify()等。