如何腌制很多子图?

时间:2021-08-01 16:22:20

标签: python matplotlib pickle

可以用 18*18 的子图腌制图形吗?

figure = plt.figure()
axes = figure.subplots(18, 18, sharex='all', sharey='all', gridspec_kw={'hspace': 0, 'wspace': 0})
for ax in axes.flat:
    ax.set_yticks([])
    ax.set_xticks([])
with open('fig.pickle', 'wb') as file:
    pickle.dump(figure, file)

当我尝试这样做时,出现错误:RecursionError:调用 Python 对象时超出了最大递归深度

1 个答案:

答案 0 :(得分:0)

这可以通过通过 sys 模块增加系统递归限制来解决。递归限制是为了尽早停止任何未优化/错误的递归,并且可以安全地增加到这个用例的 ~10,000(前提是你有 RAM 来处理它)。

这是一个工作示例:

import pickle 
import sys

import matplotlib.pyplot as plt 


sys.setrecursionlimit(10_000) #this makes it work


figure = plt.figure()
axes = figure.subplots(18, 18, sharex='all', sharey='all', gridspec_kw={'hspace': 0, 'wspace': 0})
for ax in axes.flat:
    ax.set_yticks([])
    ax.set_xticks([])

with open('fig.pickle', 'wb+') as outfile:
    pickle.dump(figure, outfile)