如何在不关闭 Julia 环境的情况下清理 Plots (GR)

Pro*_*ala 8 julia plots.jl

Plots.jl我正在调试一个脚本(与后端一起使用GKS QtTerm)。所以我多次运行该脚本。当我从终端运行它时,bash> julia pointPlacement.jl需要很长时间才能初始化 Julia 和 Plots.jl(与 python 相比,这是一大不便)。因此,我宁愿让 Julia 保持打开状态并从内部运行脚本,例如julia> include( "pointPlacement.jl" )

grid = [ [ix*0.01 iy*0.01] for ix=1:100, iy=1:100 ]
grid = vcat(ps...)

centers = hexGrid( 2, 0.2 )

using Plots
display(scatter!( grid[:,1], grid[:,2], markersize = 1, markerstrokewidth = 0, aspect_ratio=:equal ))
display(scatter!( centers[:,1], centers[:,2], markersize = 2, markerstrokewidth = 0, aspect_ratio=:equal ))
Run Code Online (Sandbox Code Playgroud)

问题是地块不断累积。这是运行 9 次之后的结果。应该只有 2 个数据集,而不是 18 个:

在此输入图像描述

我想关闭(杀死、摧毁)它们

如果我!像这样删除,它会有所帮助

display(scatter( grid[:,1], grid[:,2], markersize = 1, markerstrokewidth = 0, aspect_ratio=:equal ))
display(scatter!( centers[:,1], centers[:,2], markersize = 2, markerstrokewidth = 0, aspect_ratio=:equal ))
Run Code Online (Sandbox Code Playgroud)

但我仍然担心一些垃圾(之前的数字)会保留在内存中,并且在我运行脚本 100 倍后 Julia 会崩溃。因此,我想在每次运行脚本时调用一些函数,例如,,clear()...或其他...flush()closeAll()

crs*_*nbr 4

删除它!会达到您想要的效果 - 如果您scatter再次调用该情节就会消失并且它不会出现在后台的某个地方。

如果您愿意,可以将绘图存储在变量中并覆盖它“以确保安全”,即

p = scatter(...)
scatter!(p, ...)
Run Code Online (Sandbox Code Playgroud)

...你的绘图参数在哪里。这将显式覆盖p每个include.