如何更新朱莉娅剧情?

时间:2019-03-06 14:20:43

标签: julia

在Julia中更新图形时,如何在不使绘图窗口抓住焦点的情况下做到这一点?

假设我有以下代码:

using Plots

pyplot()

n = 100
x = collect(range(0, pi, length = n))

for i = 1:30
    y = sin.(x) .+ 0.1 * randn(100)

    plot(x, y, show=true)
    sleep(0)
end

运行时,每次更新绘图时,显示绘图的窗口都会抓住焦点,从而使我无法做任何有用的事情。

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

1 个答案:

答案 0 :(得分:1)

简单的解决方案是打开一个空的图形窗口,按照您想要的方式将其布置在桌面上,然后将其重新用于下一个绘图。 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中使用Timer事件,而不是用for循环来定期更新绘图,这使事情变得更容易并且可能更有效率。