1411 votes

Enregistrer le tracé dans un fichier image au lieu de l'afficher

Cela permet d'afficher la figure dans une interface graphique :

import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [1, 4, 9])
plt.show()

Mais comment puis-je enregistrer la figure dans un fichier (par exemple foo.png) ?

91 votes

Il semble que j'ai trouvé la réponse : its pylab.savefig('foo.png')

2 votes

Le lien devrait peut-être renvoyer vers quelque part dans matplotlib.org ?

45 votes

De plus, si l'on n'utilise pas pylab, l'objet figure a une fonction savefig également. Vous pouvez donc appeler fig = plt.figure() puis fig.savefig(...) .

1voto

Mark90 Points 35

Vous pouvez procéder de la manière suivante :

def plotAFig():
  plt.figure()
  plt.plot(x,y,'b-')
  plt.savefig("figurename.png")
  plt.close()

1voto

pedro rodriguez Points 81

Rien ne fonctionnait pour moi. Le problème est que l'image sauvegardée était très petite et je n'arrivais pas à trouver comment l'agrandir.

Cela semble l'agrandir, mais il ne s'agit toujours pas d'un plein écran.

https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.set_size_inches

fig.set_size_inches((w, h))

J'espère que cela aidera quelqu'un.

0voto

Rudresh Dixit Points 262

Vous pouvez enregistrer votre image avec n'importe quelle extension (png, jpg, etc.) et avec la résolution que vous souhaitez. Voici une fonction pour sauvegarder votre image.

import os

def save_fig(fig_id, tight_layout=True, fig_extension="png", resolution=300):
    path = os.path.join(IMAGES_PATH, fig_id + "." + fig_extension)
    print("Saving figure", fig_id)
    if tight_layout:
        plt.tight_layout()
    plt.savefig(path, format=fig_extension, dpi=resolution)

fig_id' est le nom sous lequel vous souhaitez enregistrer votre figure. J'espère que cela vous aidera :)

0voto

creeser Points 165

Utilise 'agg' car il n'y a pas d'interface utilisateur sur le serveur. Débogage sur ubuntu 21.10 avec gui et VSC. Dans le débogage, j'essaie à la fois d'afficher un tracé et de l'enregistrer dans un fichier pour l'interface web.

J'ai découvert qu'il est nécessaire de sauvegarder avant d'afficher, sinon la parcelle sauvegardée est vierge. Je suppose que l'affichage efface le tracé pour une raison quelconque. Voici ce qu'il faut faire :

plt.savefig(imagePath) 
plt.show()
plt.close(fig)

Au lieu de cela :

plt.show()
plt.savefig(imagePath) 
plt.close(fig)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X