制作一系列通过点击进行的绘图

Tom*_*rot 14 r

在下面的示例中,我希望能够通过使用鼠标单击(或键盘输入)来控制何时进入下一个绘图

for (i in 1:5){
    plot(1:i)
    Sys.sleep(1)
    #add something here that requests mouse click to proceed
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?X11()帮助文件中有一个设置为"clickToConfirm",但我无法解决它的问题.

能够使用箭头键在图中来回滚动对我来说也很有帮助.这可能吗?

目前,如果我需要查看大量的图表,我将它们输出到一个大的.pdf文件中并在那里滚动它们,但这有点麻烦.

谢谢

汤姆

Jor*_*eys 14

在R中,这将通过设置来完成par(ask=TRUE).请尝试以下代码,该代码显示退出函数时如何重置par:

op <- par(ask=TRUE)
for (i in 1:5){
    plot(1:i)
}
par(op)
Run Code Online (Sandbox Code Playgroud)

如果要保留历史记录以进行浏览,可以打开一个窗口并recordingHistory 菜单中单击,也可以自己打开窗口并显示历史记录.在功能中展示:

plot.fun <- function(){
    windows(record=TRUE) # opens a window and starts recording
    op <- par(ask=TRUE)
    on.exit(par(op))

    for (i in 1:5){
        plot(1:i)
    }
    windows.options(record=FALSE) #stops recording.
}
plot.fun()
Run Code Online (Sandbox Code Playgroud)

然而,这将保留历史中所有以前的图表以供浏览,因此如果您运行此代码3次,您将在图表历史记录中包含15个图表.另请注意,打开的绘图窗口将继续录制,直到您关闭菜单中的录制.

您可以使用绘图历史记录,因为您将拥有一个.SavedPlots包含已保存绘图历史记录的变量.可以使用History > clear history绘图窗口中的菜单清除它.如果你想从控制台清除历史记录,你可能会破解它

.SavedPlots <- NULL 
Run Code Online (Sandbox Code Playgroud)

但我建议你不要这样做,因为更改.SavedPlots变量会导致R崩溃.

有关?windows更多信息,另请参阅和?recordPlot.但是当你接近R的内部代码时,如果你开始玩这些东西,请注意你可能会遇到相当尴尬的行为.


Ben*_*ker 7

使用箭头键在曲线图之间来回滚动:它取决于平台/ R界面.

  • Windows:有一个录音功能(参见R for Windows FAQ的 Q5 ),它使用Page Up/Page Down
  • MacOS:在标准GUI下,Quartz窗口有Apple-left和Apple-right箭头
  • 在标准的Unix(无GUI)界面下,事情更加有限.你可以使用RStudio(现在有很多嗡嗡声)......我原本以为JGR也有情节历史,但它似乎没有......


ily*_*lya 5

您可以使用定位器 - 现在点击更改

for (i in 1:5){
    plot(1:i)
    locator(1)
}
Run Code Online (Sandbox Code Playgroud)