Как очистить участки (GR), не закрывая среду Джулии - PullRequest
1 голос
/ 16 октября 2019

Я отлаживаю скрипт (который использует Plots.jl с GKS QtTerm backend). Поэтому я запускаю сценарий много раз. Когда я запускаю его из терминала, как bash> julia pointPlacement.jl, требуется целая вечность для инициализации Julia и Plots.jl (это одно большое неудобство по сравнению с python). Поэтому я предпочитаю держать Джулию открытой и запускать скрипт изнутри, как 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 ))

Проблема в том, что графики накапливаются. Это после 9 прогонов. Должно быть только 2 набора данных, а не 18:

enter image description here

Я хочу закрыть (убить, уничтожить) их

Если я удалю! вот так, это помогает

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 ))

, но, тем не менее, я волнуюсь, что некоторое количество мусора (предыдущие цифры) остается выделенным в памяти, и Джулия вылетает после того, как я запустил сценарий 100x. Поэтому я хотел бы вызывать некоторые функции, такие как clear(), flush(), closeAll() ... или что-то ... каждый раз, когда я запускаю скрипт

1 Ответ

0 голосов
/ 16 октября 2019

Удаление ! дает желаемый эффект - график исчезнет, ​​если вы снова наберете scatter, и он не будет жить где-то на заднем плане.

Если вы хотите, вы можете сохранитьпостроить в переменной и перезаписать ее «для безопасности», то есть

p = scatter(...)
scatter!(p, ...)

, где ... - ваши аргументы построения. Это будет явно перезаписывать p на каждый include.

...