Question Comment utiliser la disposition matplotlib avec Figure?


J'ai trouvé la fonction tight_layout pour pyplot et je veux l'utiliser. Dans mon application, j'intègre les tracés matplotlib dans l'interface graphique de Qt et utilise la figure et non le pyplot. Y a-t-il un moyen de pouvoir appliquer tight_layout là-bas? Est-ce que cela fonctionnerait aussi si j'ai plusieurs axes dans une figure?


34
2018-03-07 14:25


origine


Réponses:


Il suffit d'appeler fig.tight_layout() comme vous le feriez normalement. (pyplot est juste un emballage pratique. Dans la plupart des cas, vous l'utilisez uniquement pour générer rapidement des objets Figure et Axe, puis appelez directement leurs méthodes.)

Il ne devrait pas y avoir de différence entre QtAgg backend et le backend par défaut (ou s'il y en a, 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 la mise en page serrée

enter image description here

Après la 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


47
2018-03-07 15:39