Comment changer la taille des chiffres établis avec matplotlib?

Comment changer la taille de la figure dessinée avec matplotlib?

1178
demandé sur tatwright 2008-12-02 00:24:44

13 réponses

figure vous indique la signature de l'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 de 80 par 80 pixels à moins que vous ne donniez aussi un argument dpi différent.

706
répondu Jouni K. Seppänen 2018-07-18 18:34:47

si vous avez déjà le chiffre créé, 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)
551
répondu Pete 2015-06-07 19:40:46

note de dépréciation:

Conformément au Guide officiel Matplotlib , l'utilisation du module pylab n'est plus recommandée. Veuillez plutôt utiliser le module matplotlib.pyplot , tel que décrit par cette autre réponse .

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 utilise alors cette valeur par défaut pour l'un de ses arguments.

267
répondu tatwright 2017-08-06 05:35:50

s'il vous plaît essayer 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.

163
répondu iPAS 2015-02-01 06:21:38

utilisant plt.rcParams

il y a aussi cette solution au cas où vous voudriez changer la taille sans utiliser l'environnement figure. Donc, dans le cas où vous utilisez plt.plot() par exemple.

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

c'est très utile lorsque vous tracez en ligne (par exemple avec le carnet IPython).

Conversion en cm

le figsize tuple accepte les pouces donc si vous voulez le régler en centimètres vous devez divisez-les par 2.54 regardez à cette question .

138
répondu G M 2018-03-13 09:38:56

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

voici un script de test de la page ci-dessus. Il crée des fichiers test[1-3].png 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érer.

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

69
répondu jfs 2017-05-23 12:18:30

dans le cas où vous êtes à la recherche d'un moyen de changer la taille de la figure dans les Pandas, vous pouvez faire par exemple:

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

df est une base de données Pandas. Si vous souhaitez modifier les paramètres par défaut, vous pouvez faire ce qui suit:

import matplotlib

matplotlib.rc('figure', figsize=(10, 5))
43
répondu Kris 2017-10-03 08:29:29

essayer de commenter la 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()
21
répondu Renaud 2014-03-14 08:22:25

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

fig.set_size_inches(width,height)

à partir de Matplotlib 2.0.0, les changements à votre toile seront visibles immédiatement, comme le forward mot-clé par défaut à True .

si vous voulez juste changer la largeur ou hauteur au lieu des deux, vous pouvez utiliser

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

ceux-ci seront également mettre à jour immédiatement 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 des versions plus anciennes que ce qui est spécifié ci-dessus. Notez que les fonctions set_figwidth et set_figheight ne supportent pas le paramètre forward dans les versions plus anciennes que Matplotlib 1.5.0.

21
répondu River 2018-03-09 18:51:15

pour augmenter la taille de votre figure N fois que vous avez besoin d'insérer cela juste avant votre pl.show ():

N = 2
params = pl.gcf()
plSize = params.get_size_inches()
params.set_size_inches( (plSize[0]*N, plSize[1]*N) )

il fonctionne aussi bien avec le carnet ipython.

13
répondu psihodelia 2014-10-30 10:38:37

cela fonctionne bien pour moi:

from matplotlib import pyplot as plt
F = gcf()
Size = F.get_size_inches()
F.set_size_inches(Size[0]*2, Size[1]*2, forward=True)#Set forward to True to resize window along with plot in figure.
plt.show() #or plt.imshow(z_array) if using an animation, where z_array is a matrix or numpy array

cela pourrait aussi aider: http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html

9
répondu Blairg23 2014-05-28 05:47:34

puisque Matplotlib n'est pas capable d'utiliser le système métrique nativement, si vous voulez spécifier la taille de votre figure dans une unité raisonnable de longueur comme les centimètres, vous pouvez faire ce qui suit (code de gns-ank ):

def cm2inch(*tupl):
    inch = 2.54
    if isinstance(tupl[0], tuple):
        return tuple(i/inch for i in tupl[0])
    else:
        return tuple(i/inch for i in tupl)

ensuite vous pouvez utiliser:

plt.figure(figsize=cm2inch(21, 29.7))
8
répondu Franck Dernoncourt 2017-05-23 11:55:02

ceci redimensionne le chiffre immédiatement après que le chiffre a été tiré (au moins en utilisant Qt4Agg / TkAgg - mais pas MacOSX - avec matplotlib 1.4.0):

matplotlib.pyplot.get_current_fig_manager().resize(width_px, height_px)
7
répondu wilywampa 2014-10-28 05:08:13