web-dev-qa-db-fra.com

changer la taille et le format de la figure dans matplotlib

Je veux obtenir fig1 exactement de la 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()

De l'aide?

53
golay

Vous pouvez définir la taille de la figure si vous créez explicitement la figure avec

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

Pour changer le format de la figure enregistrée, il suffit de changer l’extension dans le nom du fichier. Cependant, je ne sais pas si l'un des backends matplotlib supporte tiff

76

Vous pouvez changer la taille de la parcelle en ajoutant ceci

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

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 google sur matplotlib + tiff, je ne suis pas convaincu que matplotlib puisse créer des parcelles tiff. Il est fait mention du fait que backend GDK puisse le faire.

Une option serait de convertir la sortie avec un outil tel que convert de imagemagick.

(Une autre option est d'attendre ici jusqu'à ce qu'un n véritable expert matplotlib se présente et me prouve le contraire ;-)

18
mgilson

Si vous avez besoin de changer la taille de la figure after vous l'avez créée, utilisez les méthodes

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

value_height et value_width sont en pouces. Pour moi, c'est le moyen le plus pratique.

6
Antoni