сохранить фигуру pyplot «как фигуру» (не как изображение)

#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.