如何更新Julia绘图?

如何更新Julia绘图?,julia,Julia,在Julia中更新图形时,如何在绘图窗口不抓住焦点的情况下进行更新 假设我有以下代码: 使用绘图 pyplot() n=100 x=收集(范围(0,π,长度=n)) 对于i=1:30 y=sin.(x)。+0.1*randn(100) 绘图(x,y,show=true) 睡眠(0) 结束 运行时,每次更新绘图时,显示绘图的窗口都会抓住焦点,阻止我做任何有用的事情 如何在不激活窗口的情况下更新绘图?例如,这将用于在后台监控程序。简单的解决方案是打开一个空的图形窗口,在桌面上以您想要的方式排列它,

在Julia中更新图形时,如何在绘图窗口不抓住焦点的情况下进行更新

假设我有以下代码:

使用绘图
pyplot()
n=100
x=收集(范围(0,π,长度=n))
对于i=1:30
y=sin.(x)。+0.1*randn(100)
绘图(x,y,show=true)
睡眠(0)
结束
运行时,每次更新绘图时,显示绘图的窗口都会抓住焦点,阻止我做任何有用的事情


如何在不激活窗口的情况下更新绘图?例如,这将用于在后台监控程序。

简单的解决方案是打开一个空的图形窗口,在桌面上以您想要的方式排列它,并在下一个绘图中重复使用它。重复使用同一图形窗口是
Plots.jl
中的默认设置。下面是解决方案的外观

using Plots
pyplot() # or another backend

plot() # this will open the plot window app and steal the focus once
# arrange the window however the way you want, put it in another monitor etc.

for i = 1:30
   plot(rand(3,3), show=true, reuse=true) # reuse=true is not necessary since it is already the default
   sleep(0.1)
end
由于将再次使用相同的应用程序窗口,打印窗口将不再窃取焦点

据我所知,第一个窗口将窃取焦点(我认为这在您的用例中不是一个真正的问题),因为它是由另一个应用程序进程创建的。这是大多数桌面环境中的默认行为。某些桌面环境可能允许更改此默认设置


作为补充说明,您可以使用Julia中的事件,而不是for循环来定期更新绘图,这会使事情变得更简单,更有效率。

我不是绘图专家。jl但也许您可以尝试
绘图。这仍然抢走了对macOS v10.14.3和Julia v1.1.0的关注。这抢走了对Ubuntu16.04和Julia v1.1.0的关注。然后这就是pyplot错误。有几个用户在matplotlib repo上报告了类似的问题。尽管它在我使用Gnome 3.30和matplotlib 2.2.2的计算机上按预期工作。您可以试用
GR
后端吗?您还可以检查一下您的
matplotlib
是什么版本吗?@hckr-谢谢,使用
GR
后端,它不会窃取焦点。