web-dev-qa-db-fra.com

Comment utiliser la disposition serrée de matplotlib avec la figure?

J'ai trouvé la fonction tight_layout pour pyplot et je veux l'utiliser. Dans mon application, j'intègre des graphiques matplotlib dans l'interface graphique Qt et j'utilise figure et non pyplot. Existe-t-il un moyen de pouvoir y appliquer tight_layout? Cela fonctionnerait-il aussi si j'avais plusieurs axes sur une même figure?

38
Katya

Appelez simplement fig.tight_layout() comme vous le feriez normalement. (pyplot est juste un wrapper de commodité. Dans la plupart des cas, vous ne l'utilisez que pour générer rapidement des objets figure et axes, puis appeler directement leurs méthodes.)

Il ne devrait pas y avoir de différence entre le backend QtAgg et le backend par défaut (ou s'il y en a un, c'est un bug).

Par exemple.

import matplotlib.pyplot as plt

#-- In your case, you'd do something more like:
# from matplotlib.figure import Figure
# fig = Figure()
#-- ...but we want to use it interactive for a quick example, so 
#--    we'll do it this way
fig, axes = plt.subplots(nrows=4, ncols=4)

for i, ax in enumerate(axes.flat, start=1):
    ax.set_title('Test Axes {}'.format(i))
    ax.set_xlabel('X axis')
    ax.set_ylabel('Y axis')

plt.show()

Avant une disposition serrée

enter image description here

Après une mise en page serrée

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=4, ncols=4)

for i, ax in enumerate(axes.flat, start=1):
    ax.set_title('Test Axes {}'.format(i))
    ax.set_xlabel('X axis')
    ax.set_ylabel('Y axis')

fig.tight_layout()

plt.show()

enter image description here

59
Joe Kington