Использование Plots.jl для фреймов с тяжелыми гифками - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь создать gif с 100 кадрами, что, как я полагаю, не должно быть проблемой, если я правильно его кодирую.Однако следующий код замедляет сканирование и, похоже, вызывает утечку памяти.

using Plots
using ProgressMeter


u = rand(100,100)
hmap = heatmap(zeros(size(u)), clim=(0,1))


p = Progress(1000, 1)

anim = Animation()

for i=1:1000
    u = rand(100,100)
    heatmap!(hmap[1],u)
    if mod(i,10) == 0
        frame(anim)
    end
    next!(p)
end

gif(anim, "/tmp/anim_fps30.gif", fps=30)

Я допустил критическую ошибку в своем кодировании?Есть ли способ получить кадры для анимации, не держа их все в памяти?Спасибо.

1 Ответ

0 голосов
/ 06 июня 2018

Я думаю, что более медленная часть вашего цикла - не frame (), а heatmap ().Ваш код запускает тепловую карту 10 раз за кадр.Попробуйте:

using Plots pyplot() # if needed using ProgressMeter</p> <pre><code>function doit() u = rand(100,100) hmap = heatmap(zeros(size(u)), clim=(0,1)) prog = Progress(1000, 1) anim = Animation() for i=1:1000 if mod(i,10) == 0 heatmap!(hmap[1],rand(100,100)) frame(anim) end next!(prog) end anim end gif(doit(), "/tmp/anim_fps30.gif", fps=30)

...