86 votes

Modifier la taille et le format des figures dans matplotlib

Je souhaite obtenir la fig1 exactement de taille 4 par 3 pouces, et en format tiff en corrigeant le programme ci-dessous :

import matplotlib.pyplot as plt

list1 = [3,4,5,6,9,12]
list2 = [8,12,14,15,17,20]

plt.plot(list1, list2)
plt.savefig('fig1.png', dpi = 300)
plt.close()

159voto

Francesco Montesano Points 6193

Vous pouvez définir la taille de la figure si vous créez explicitement la figure à l'aide de la fonction

plt.figure(figsize=(3,4))

Vous devez définir la taille du chiffre avant d'appeler plt.plot() Pour modifier le format de la figure sauvegardée, il suffit de changer l'extension du nom du fichier. Cependant, je ne sais pas si l'un des backends de matplotlib supporte le format tiff.

66voto

Vous pouvez modifier la taille du tracé en l'ajoutant avant de créer la figure.

plt.rcParams["figure.figsize"] = [16,9]

26voto

mgilson Points 92954

La première partie (définir explicitement la taille de la sortie) n'est pas trop difficile :

import matplotlib.pyplot as plt
list1 = [3,4,5,6,9,12]
list2 = [8,12,14,15,17,20]
fig = plt.figure(figsize=(4,3))
ax = fig.add_subplot(111)
ax.plot(list1, list2)
fig.savefig('fig1.png', dpi = 300)
fig.close()

Mais après une rapide recherche sur google sur matplotlib + tiff, je ne suis pas convaincu que matplotlib puisse faire de l'analyse de données. tiff parcelles. Il est fait mention de la GDK backend être capable de le faire.

Une option serait de convertir la sortie avec un outil comme imagemagick's convert .

(Une autre option consiste à attendre ici qu'un vrai expert matplotlib se présente et me prouve que j'ai tort ;-)

24voto

AZirma Points 71

Si vous devez modifier la taille du chiffre après vous l'avez créé, utilisez les méthodes

fig = plt.figure()
fig.set_figheight(value_height)
fig.set_figwidth(value_width)

donde value_height y value_width sont exprimés en pouces. Pour moi, c'est la méthode la plus pratique.

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