#matplotlib #julia
#matplotlib #джулия
Вопрос:
Как я могу сохранить фигуру, используя PyPlot в Julia, чтобы фигуру можно было перезагрузить как фигуру позже в Julia? (не как изображение)
Ответ №1:
Вы можете использовать serialize
для хранения любого объекта Julia. Это прекрасно работает и для сюжетов.
Давайте начнем с создания графика:
using Plots
pyplot()
p = plot(rand(10));
using Serialization
Serialization.serialize("myfile.jld", p);
Обратите внимание, что вам нужна точка с запятой после plot
команды, чтобы она не отображалась на экране.
Давайте теперь прочитаем сюжет (чтобы провести полноценный тест, я закончил предыдущую сессию Julia и начал новую).:
using Plots
pyplot();
using Serialization
p2 = Serialization.deserialize("myfile.jld");
Чтобы отобразить его сейчас, достаточно ввести REPL:
julia> p2
Возможно, вы также захотите использовать обычный PyPlot
(я настоятельно рекомендую Plots
для гибкости). В этом случае лучше всего следовать правилам, описанным в объектно-ориентированном API Matplotlib:
using PyPlot
ioff()
fig = subplot()
fig.plot(rand(10))
fig.set_title("Hello world")
using Serialization
serialize("pp.jld", fig)
Для того, чтобы отобразить десериализацию объекта обратно:
using PyPlot
ioff()
using Serialization
fig = deserialize("pp.jld")
show()
Наконец, обратите внимание, что сериализация хороша только для кратковременного хранения. Если что-то изменится (например, вы обновите пакеты Julia), вы, возможно, не сможете десериализовать график.
Следовательно, еще одной хорошей альтернативой для обрабатываемых графиков является сохранение их в формате LaTeX или SVG — и то, и другое возможно в Julia.