【问题标题】:python matplotlib save graph as data filepython matplotlib 将图形保存为数据文件
【发布时间】:2017-12-31 19:17:41
【问题描述】:

我想创建一个 python 脚本,它可以沿水平轴放大和缩小 matplotlib 图形。我的绘图是一组水平条形图。

我还想让它能够采用任何通用的 matplotlib 图。

我不想只加载图像并放大它,我想沿水平轴放大图形。 (我知道该怎么做)

有什么方法可以将创建的图形保存并加载为数据文件,或者是否有一个对象可以稍后保存和加载?

(通常,我会创建我的图表,然后使用 matplotlib plt.show 显示它,但是创建图表需要时间,我不想每次显示它时都重新创建图表)

【问题讨论】:

  • 您要保存图形还是基础数据?
  • @DavidZ 底层数据、数组或任何保存图形数据的东西。
  • 也许你可以使用pickle来保存你的对象,然后再加载它? docs.python.org/2/library/pickle.html
  • matplotlib.pyplot.plot 和其他人返回你可以pickle 并保存以备后用的基础数据。
  • 你可以查看这个问题stackoverflow.com/questions/7290370/…

标签: python matplotlib


【解决方案1】:

您可以使用pickle 包来保存您的坐标区,然后将其加载回来。

将您的绘图保存到pickle 文件中:

import pickle
import matplotlib.pyplot as plt
ax = plt.plot([1,2,5,10])
pickle.dump(ax, open("plot.pickle", "wb"))

然后加载回来:

import pickle
import matplotlib.pyplot as plt   
ax = pickle.load(open("plot.pickle", "rb"))
plt.show()

【讨论】:

  • 我正在使用 fig,(graph,label_texts)=plt.subplots(2,1,gridspec_kw = {'height_ratios':[4.5, 1]}) 生成我的图。然后我正在尝试 pickle.dump(fig,file(file_name.split('.')[0]+'_graph.pickle'‌​,'w')) 这给了我: Can't pickle at 0x0CB02FB0>: it's not found as generate_graph. 这似乎是我如何生成图像的问题。有什么想法吗? @Cedric
  • 试试pickle.dump(fig, open("plot.pickle", "wb"))。我认为你应该使用open 而不是file
  • 我遇到了同样的错误。我想这是一个泡菜问题,而不是开放的问题。
  • 你试过用“wb”代替“w”吗?
  • 我做到了。问题是用函数腌制东西,添加 dill 库如下是解决方案
【解决方案2】:

@Cedric 的回答。

此外,如果您遇到酸洗函数的 pickle 错误,请将“dill”库添加到您的酸洗脚本中。您只需在开始时导入它,剩下的就交给它了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    相关资源
    最近更新 更多