web-dev-qa-db-fra.com

Enregistrement des graphiques Matplotlib sur l'image en plein écran

Je construis un petit utilitaire graphique en utilisant Pandas et MatPlotLib pour analyser les données et les graphiques de sortie d'une machine au travail.

Lorsque je génère le graphique en utilisant

plt.show()

Je me retrouve avec une image peu claire qui a des légendes et des étiquettes qui se pressent comme ça.

Sample Bad Image Cependant, étendre la fenêtre en plein écran résout mon problème, en repositionnant tout d'une manière qui permet au graphique d'être visible.

Je sauvegarde ensuite le graphique dans un .png comme ça

plt.savefig('sampleFileName.png')

Mais lorsqu'il enregistre dans l'image, la version correcte plein écran du tracé n'est pas enregistrée, mais plutôt la version par défaut défectueuse.

Comment puis-je enregistrer le plt.show () plein écran du tracé en .png?

J'espère que je ne suis pas trop déroutant.

Merci de votre aide!

16
user4933255

La méthode que vous utilisez pour maximiser la taille de la fenêtre dépend du backend matplotlib que vous utilisez. Veuillez consulter l'exemple suivant pour les 3 backends les plus courants:

import matplotlib.pyplot as plt

plt.figure()
plt.plot([1,2], [1,2])

# Option 1
# QT backend
manager = plt.get_current_fig_manager()
manager.window.showMaximized()

# Option 2
# TkAgg backend
manager = plt.get_current_fig_manager()
manager.resize(*manager.window.maxsize())

# Option 3
# WX backend
manager = plt.get_current_fig_manager()
manager.frame.Maximize(True)

plt.show()
plt.savefig('sampleFileName.png')

Vous pouvez déterminer le backend que vous utilisez avec la commande matplotlib.get_backend(). Lorsque vous enregistrez la version maximisée de la figure, elle enregistre une image plus grande comme vous le souhaitez.

35
gtlambert

Comme une option de plus, je pense qu'il vaut également la peine

plt.savefig('filename.png', bbox_inches='tight')

Ceci est particulièrement utile si vous faites subplots qui a des étiquettes d'axe qui semblent encombrées.

3
kmario23

Pour ceux qui reçoivent des erreurs dans les réponses ci-dessus, cela a fonctionné pour moi.

#Show full screen
mng = plt.get_current_fig_manager()
mng.full_screen_toggle()
0
Westly White