Comment sauver une figure matplotlib avec une taille donnée ?


Pour créer une figure matplotlib avec des dimensions définies, spécifiez la taille de la figure et sa résolution en points par pouce (DPI). Cela garantit que vos figures enregistrées auront exactement la résolution dont vous avez besoin. Exemples :

Enregistrez une figure de dimensions 600 * 600.

Pour accomplir cela, la meilleure solution est de :

import matplotlib.pyplot as plt

plt.figure(figsize=(6, 6))

x = [1,10]
y = [3,6]

plt.plot(x,y,'--')

plt.savefig('DashedLine_01.png', dpi=100, facecolor='white')

plt.show()

Cela va créer une image png de dimensions 600 par 600. Il est à noter que le dpi d'une figure est spécifié uniquement lorsqu'elle a été enregistrée. Les points par pouce (DPI) déterminent la résolution d'une image et sont directement liés à sa taille en octets. À mesure que le DPI augmente, la taille du fichier augmente également.

Remarque : Pour assurer une création vidéo réussie avec ffmeg, il est essentiel que la largeur des images puisse être divisée de manière égale par deux (sinon vous obtiendrez l'erreur "ffmpeg : width not divisible by 2"). Voir Comment créer une vidéo à partir d'une liste d'images avec Python ?

Un autre exemple

D'autre part, vous pouvez également définir dpi dans figure() pour améliorer la résolution de l'image sans affecter sa sortie. Lorsqu'il est utilisé avec plt.show(), cela se traduira par un affichage d'image de meilleure qualité.

import matplotlib.pyplot as plt

plt.figure(figsize=(6, 6), dpi=100,)

x = [1,10]
y = [3,6]

plt.plot(x,y,'--')

plt.savefig('DashedLine_01.png', facecolor='white')

plt.show()

Déterminez les proportions optimales entre la hauteur et la largeur.

Si vous avez du mal à équilibrer les proportions de votre image en termes de hauteur et de largeur, une solution consiste à enregistrer d'abord l'image en utilisant bbox_inches='tight':

import matplotlib.pyplot as plt

x = [1,10]
y = [3,6]

plt.plot(x,y,'--')

plt.savefig('DashedLine_01.png', facecolor='white', bbox_inches='tight')

plt.show()

Ce code générera une image PNG de dimensions 372.0 * 248.0, donc le ratio est de

372.0 / 248.0 = 1.5

est un bon ratio pour cette figure. Nous pouvons alors par exemple utiliser figsize=(12, 8) puisque 12 / 8 = 1,5 :

import matplotlib.pyplot as plt

plt.figure(figsize=(12, 8), dpi=100,)

x = [1,10]
y = [3,6]

plt.plot(x,y,'--')

plt.savefig('DashedLine_01.png', facecolor='white')

plt.show()

Références

Liens Site
figure() matplotlib.org
savefig() matplotlib.org