获取matplotlib中的数字列表

Evg*_*eny 44 python matplotlib

我想要:

pylab.figure()
pylab.plot(x)
pylab.figure()
pylab.plot(y)
# ...
for i, figure in enumerate(pylab.MagicFunctionReturnsListOfAllFigures()):
  figure.savefig('figure%d.png' % i)
Run Code Online (Sandbox Code Playgroud)

什么是返回pylab中当前数字列表的神奇函数?

网络搜索没有帮助......

Mat*_*ell 87

Pyplot有get_fignums方法,返回图号列表.这应该做你想要的:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(100)
y = -x

plt.figure()
plt.plot(x)
plt.figure()
plt.plot(y)

for i in plt.get_fignums():
    plt.figure(i)
    plt.savefig('figure%d.png' % i)
Run Code Online (Sandbox Code Playgroud)

  • 我很确定这是OP问题的规范答案,他应该接受它. (3认同)
  • 现在还有一个可以以相同方式使用的 `plt.get_figlabels` 方法,我使用它在保存文件名时将图形标签包含在文件名中。 (2认同)

小智 16

以下单行检索现有数据列表:

import matplotlib.pyplot as plt
figs = list(map(plt.figure, plt.get_fignums()))
Run Code Online (Sandbox Code Playgroud)


unu*_*tbu 15

编辑:正如Matti Pastell的解决方案所示,有一种更好的方法:使用plt.get_fignums().


import numpy as np
import pylab
import matplotlib._pylab_helpers

x=np.random.random((10,10))
y=np.random.random((10,10))
pylab.figure()
pylab.plot(x)
pylab.figure()
pylab.plot(y)

figures=[manager.canvas.figure
         for manager in matplotlib._pylab_helpers.Gcf.get_all_fig_managers()]
print(figures)

# [<matplotlib.figure.Figure object at 0xb788ac6c>, <matplotlib.figure.Figure object at 0xa143d0c>]

for i, figure in enumerate(figures):
    figure.savefig('figure%d.png' % i)
Run Code Online (Sandbox Code Playgroud)

  • 当然它可以工作,但_pylab_helpers开头的下划线是一个信号,这不是一个支持的接口,可能随时消失.如果没有已发布的界面,并且您有一个用例,请提交功能请求. (5认同)