python - 重用 matplotlib 子图的无花果和轴
问题描述
在图中创建 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 以供下一次迭代?
解决方案
我会这样做:
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()
推荐阅读
- amazon-web-services - 在不使用 API 网关的情况下,如何获取用于测试用 JAVA 开发的 lambda 函数的 URL?
- docker - 如何为子域上的 docker 服务正确配置 traefik?
- python-3.x - 平滑分割图像的边缘
- apache-spark - Livy 会话已损坏
- python - Python 绘制日期时间格式
- r - 根据来自其他数据帧的时间序列间隔分配新的分组变量
- python - 显示在 for (tkinter python) 中创建的带有 StringVar 的几个 Combobox 的默认值
- vim - 调整终端窗口大小的快捷方式
- c# - 如何使用正则表达式拆分字符串
- php - 在 WP Lister for Amazon 中获取 woocommerce 4 产品自定义属性值