Question Comment changer la taille des figures dessinées avec matplotlib?


Comment changez-vous la taille de la figure dessinée avec matplotlib?


1099
2017-12-01 21:24


origine


Réponses:


figure vous indique la signature d'appel:

from matplotlib.pyplot import figure
figure(num=None, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')

figure(figsize=(1,1)) créerait une image pouce par pouce, qui serait 80 par 80 pixels à moins que vous donniez également un argument différent de dpi.


673
2018-03-12 12:41



Si vous avez déjà créé le chiffre, vous pouvez le faire rapidement:

fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)

Pour propager le changement de taille à une fenêtre gui existante ajouter forward=True

fig.set_size_inches(18.5, 10.5, forward=True)

530
2017-11-29 17:30



Note de dépréciation:
  Selon le guide officiel Matplotlib, l'utilisation de pylab le module n'est plus recommandé. S'il vous plaît envisager d'utiliser le matplotlib.pyplot module à la place, comme décrit par cette autre réponse.

Ce qui suit semble fonctionner:

from pylab import rcParams
rcParams['figure.figsize'] = 5, 10

Cela fait la largeur de la figure 5 pouces, et sa hauteur 10 pouces.

La classe Figure l'utilise ensuite comme valeur par défaut pour l'un de ses arguments.


258
2017-12-01 21:28



S'il vous plaît essayez un code simple comme suit:

from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()

Vous devez définir la taille de la figure avant de tracer.


152
2018-06-06 03:24



UTILISER plt.rcParams

Il existe également cette solution de contournement dans le cas où vous souhaitez modifier la taille sans utiliser l'environnement de figure. Donc, au cas où vous utilisez plt.plot() par exemple.

import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)

Ceci est très utile lorsque vous tracez en ligne (par exemple avec IPython Notebook).

Conversion en cm

le figsize tuple accepte les pouces, donc si vous voulez le mettre en centimètres, vous devez les diviser par 2,54 jeter un oeil à cette question.


124
2018-01-18 10:55



Le premier lien dans Google pour 'matplotlib figure size' est AdjustingImageSize (Google cache de la page).

Voici un script de test de la page ci-dessus. Ça crée test[1-3].png fichiers de différentes tailles de la même image:

#!/usr/bin/env python
"""
This is a small demo file that helps teach how to adjust figure sizes
for matplotlib

"""

import matplotlib
print "using MPL version:", matplotlib.__version__
matplotlib.use("WXAgg") # do this before pylab so you don'tget the default back end.

import pylab
import numpy as np

# Generate and plot some simple data:
x = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)

pylab.plot(x,y)
F = pylab.gcf()

# Now check everything with the defaults:
DPI = F.get_dpi()
print "DPI:", DPI
DefaultSize = F.get_size_inches()
print "Default size in Inches", DefaultSize
print "Which should result in a %i x %i Image"%(DPI*DefaultSize[0], DPI*DefaultSize[1])
# the default is 100dpi for savefig:
F.savefig("test1.png")
# this gives me a 797 x 566 pixel image, which is about 100 DPI

# Now make the image twice as big, while keeping the fonts and all the
# same size
F.set_size_inches( (DefaultSize[0]*2, DefaultSize[1]*2) )
Size = F.get_size_inches()
print "Size in Inches", Size
F.savefig("test2.png")
# this results in a 1595x1132 image

# Now make the image twice as big, making all the fonts and lines
# bigger too.

F.set_size_inches( DefaultSize )# resetthe size
Size = F.get_size_inches()
print "Size in Inches", Size
F.savefig("test3.png", dpi = (200)) # change the dpi
# this also results in a 1595x1132 image, but the fonts are larger.

Sortie:

using MPL version: 0.98.1
DPI: 80
Default size in Inches [ 8.  6.]
Which should result in a 640 x 480 Image
Size in Inches [ 16.  12.]
Size in Inches [ 16.  12.]

Deux notes:

  1. Les commentaires du module et la sortie réelle diffèrent.

  2. Cette réponse permet facilement de combiner les trois images dans un fichier image pour voir la différence de taille.


66
2017-12-02 16:01



Dans le cas où vous cherchez un moyen de changer la taille de la figure dans Pandas, vous pourriez faire par exemple:

df['some_column'].plot(figsize=(10, 5))

df est un dataframe Pandas. Si vous souhaitez modifier les paramètres par défaut, vous pouvez effectuer les opérations suivantes:

import matplotlib

matplotlib.rc('figure', figsize=(10, 5))

41
2017-09-29 12:54



Vous pouvez simplement utiliser (à partir de matplotlib.figure.Figure):

fig.set_size_inches(width,height)

À partir de Matplotlib 2.0.0, les modifications apportées à votre canevas seront visibles immédiatement forward mot-clé par défaut True.

Si vous voulez juste changer la largeur ou la taille au lieu des deux, vous pouvez utiliser

fig.set_figwidth(val) ou fig.set_figheight(val)

Ceux-ci mettront également immédiatement à jour votre toile, mais seulement dans Matplotlib 2.2.0 et plus récent.

Pour les anciennes versions

Vous devez spécifier forward=True explicitement afin de vivre-mettre à jour votre toile dans les versions plus anciennes que ce qui est spécifié ci-dessus. Notez que le set_figwidth et set_figheight les fonctions ne supportent pas le forward paramètre dans les versions antérieures à Matplotlib 1.5.0.


20
2017-10-30 15:23



Essayez de commenter le fig = ... ligne

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2

fig = plt.figure(figsize=(18, 18))
plt.scatter(x, y, s=area, alpha=0.5)
plt.show()

18
2018-03-14 08:22