首页 > 解决方案 > 将pyplot图“保存为图”(不是图像)

问题描述

如何在 Julia 中使用 PyPlot 保存图形,以便稍后在 Julia 中将图形重新加载为图形?(不是图像)

标签: matplotlibjulia

解决方案


您可以使用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

您可能还想使用plain PyPlot(我强烈建议Plots您灵活使用)。在这种情况下,最好的办法是遵循Matplotlib 的面向对象 API 中描述的规则:

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 中两者都是可能的。


推荐阅读