【问题标题】:Reusing matplotlib subplots' fig and axes重用 matplotlib 子图的无花果和轴
【发布时间】:2020-07-15 11:41:31
【问题描述】:

在图中创建 2 x 2 子图并保存该图。

示例代码:

def plot_all(i):
    fig, axes = plt.subplots(nrows = 2, ncols = 2, figsize = (20,10))   ## Takes the most time
    fig.suptitle('title')
    axes[0,0].plot(np.random.randn(3))
    axes[0,1].plot(np.random.randn(3))
    axes[1,0].plot(np.random.randn(3))
    axes[1,1].plot(np.random.randn(3))

    fig.savefig('my_plot{}.jpg'.format(i))
    plt.close(fig)

for i in range(10000):
    plot_all(i)

我认为'plot_all'函数的前两行在每次迭代中花费了大部分时间,所以我尝试重用 fig 和 axes 这样就没有必要为下一次连续创建论文绘图。有没有办法再次保存 fig 和 axes 以供下一次迭代?

【问题讨论】:

  • 查看.set* 命令。您可以直接与artists 交互,然后在画布上强制绘制。

标签: python python-3.x matplotlib


【解决方案1】:

我会这样做:

def plot_all(i, axes):
    axes[0,0].plot(np.random.randn(3))
    axes[0,1].plot(np.random.randn(3))
    axes[1,0].plot(np.random.randn(3))
    axes[1,1].plot(np.random.randn(3))


fig, axes = plt.subplots(nrows = 2, ncols = 2, figsize = (20,10))
fig.suptitle('title')
for i in range(3):
    plot_all(i, axes)
    fig.savefig('my_plot{}.jpg'.format(i))
    for ax in axes.flat:
        ax.cla()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多