variable - python plot title position




Holen Sie sich die Liste der Figuren in Matplotlib (4)

Edit: Wie Matti Pastells Lösung zeigt , gibt es einen viel besseren Weg: Verwenden Sie 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)

Ich würde gern:

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

Was ist die magische Funktion, die eine Liste der aktuellen Zahlen in pylab zurückgibt?

Websuche hat nicht geholfen ...


Angenommen, Sie haben num in keinem Ihrer Figurenkonstruktoren manuell angegeben (also sind alle Ihre Figurennummern fortlaufend) und alle Figuren, die Sie speichern möchten, haben tatsächlich Dinge auf ihnen gezeichnet.

import matplotlib.pyplot as plt
plot_some_stuff()
# find all figures
figures = []
for i in range(maximum_number_of_possible_figures):
    fig = plt.figure(i)
    if fig.axes:
        figures.append(fig)
    else:
        break

Hat den Nebeneffekt, eine neue leere Figur zu erstellen, aber besser, wenn Sie sich nicht auf eine nicht unterstützte Schnittstelle verlassen möchten


Dies sollte Ihnen helfen (aus dem pylab.figure doc):

Rufunterschrift ::

Zahl (num = None, figsize = (8, 6), dpi = 80, Gesichtsfarbe = 'w', edgecolor = 'k')

Erstellen Sie eine neue Figur und geben Sie eine: class: matplotlib.figure.Figure Instanz zurück. Wenn num = None , wird die Zahlenzahl erhöht und eine neue Zahl wird erstellt. ** Die zurückgegebenen Figurenobjekte haben ein Zahlenattribut, das diese Zahl enthält.

Wenn Sie Ihre Figuren in einer Schleife abrufen möchten, wäre es ein guter Ansatz, Ihre Figureninstanzen in einer Liste zu speichern und sie in der Schleife aufzurufen.

>> f = pylab.figure()
>> mylist.append(f)
etc...
>> for fig in mylist:
>>     fig.savefig()

Ich neige dazu, meine Figuren mit Zeichenfolgen zu benennen, anstatt die Standard (und nicht beschreibende) Ganzzahl zu verwenden. Hier ist eine Möglichkeit, diesen Namen abzurufen und Ihre Zahlen mit einem beschreibenden Dateinamen zu speichern:

import matplotlib.pyplot as plt
figures = []
figures.append(plt.figure(num='map'))
# Make a bunch of figures ...
assert figures[0].get_label() == 'map'

for figure in figures:
    figure.savefig('{0}.png'.format(figure.get_label()))




matplotlib