我熟悉matlab,但对r来说比较新。我有一个r脚本,它产生许多不同的图形绘图窗口,并在每个窗口之间花费一些时间。在这种情况下,我倾向于处理其他事情。问题是每次生成一个新的图形窗口时,它会窃取焦点,重定向键盘输入远离我正在做的事情。 r是否有一种方法可以在生成图形图时防止焦点窃取?
我到处搜索但没有找到任何参考。我在linux工作。
非常感谢任何帮助。
由于
答案 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
。