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




tracer cercle python matplotlib (11)

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


Essayez de commenter la ligne fig = ...

%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()

Note de dépréciation:
Conformément au guide officiel Matplotlib , l'utilisation du module pylab n'est plus recommandée. matplotlib.pyplot utiliser matplotlib.pyplot module matplotlib.pyplot , 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 de 5 pouces, et sa hauteur de 10 pouces .

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


figure vous indique la signature d'appel:

figure(num=None, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')

Donc, figure(figsize=(1,1)) crée une image de pouce par pouce, qui sera de 80 par 80 pixels, sauf si vous donnez également un argument dpi différent.


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.


Ceci redimensionne immédiatement la figure même après que la figure a été dessinée (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)

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


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))

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, dans le 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 tuple figsize accepte les pouces, donc si vous voulez le mettre en centimètres, vous devez les diviser par 2.54 jetez un oeil à cette question .


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 immédiatement visibles, car le mot clé forward défini par défaut sur True .

Si vous voulez juste changer la largeur ou la hauteur 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 mettre à jour votre canevas dans les versions antérieures à ce qui est spécifié ci-dessus. Notez que les fonctions set_figwidth et set_figheight ne prennent pas en charge le paramètre forward dans les versions antérieures à Matplotlib 1.5.0.


Puisque Matplotlib n'est pas capable d'utiliser le système métrique de manière native, si vous voulez spécifier la taille de votre personnage dans une unité de longueur raisonnable 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))

Pour augmenter la taille de votre personnage N fois vous devez l'insérer 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 également bien avec le cahier ipython.





visualization