在r中启动新的图形绘图时禁止焦点窃取

时间:2013-05-31 18:56:17

标签: r

我熟悉matlab,但对r来说比较新。我有一个r脚本,它产生许多不同的图形绘图窗口,并在每个窗口之间花费一些时间。在这种情况下,我倾向于处理其他事情。问题是每次生成一个新的图形窗口时,它会窃取焦点,重定向键盘输入远离我正在做的事情。 r是否有一种方法可以在生成图形图时防止焦点窃取?

我到处搜索但没有找到任何参考。我在linux工作。

非常感谢任何帮助。

由于

3 个答案:

答案 0 :(得分:3)

仅在Windows上:尝试在您的函数中添加bringToTop(-1)

z <- function() {
  plot(1:3)
  bringToTop(-1)
}
z()

它会暂时窃取焦点,然后将其返回。

Windows上的另一种策略:

z <-  function(){
    windows(restoreConsole=TRUE)
    plot(1)
}
z()

我还在想这里......

答案 1 :(得分:2)

如果你在制作剧情时对做其他事情更感兴趣,那么我建议打开一个pdf设备,以便所有的情节都在后台转到pdf文件,并且不会干扰你正在做的其他事情。然后,当您准备好浏览图表时,只需打开pdf文件并查看图表(您可以通过这种方式轻松返回上一个图表。)

答案 2 :(得分:1)

如果您的系统上安装了wmctrl,则可以通过重新定义plot功能来避免失去焦点:

plot <- function(...) {
  graphics::plot(...)
  system("wmctrl -a :ACTIVE:")
}

它似乎工作得很好,至少在fluxbox窗口管理器中。我尝试了不同的场景,例如在调用plot之前的长时间计算期间切换到不同的窗口,并打开多个图。

如果您希望它继续存在,请将其放入.Rprofile