Comment changez-vous la taille de la figure dessinée avec matplotlib?
python
graph
matplotlib
plot
visualization
tatwright
la source
la source
plt.figure(figsize=(20,10))
fig, ax = plt.subplots(figsize=(20, 10))
fig = plt.gcf()
->fig.set_size_inches(11,8)
pour éviter la confusion une fois pour toutes.Réponses:
la figure vous indique la signature de l'appel:
figure(figsize=(1,1))
créerait une image pouce par pouce, qui serait de 80 par 80 pixels, sauf si vous donnez également un argument dpi différent.la source
show()
pour créer une fenêtre contextuelle, vous devez appelerfigure(num=1,...)
avant de tracer quoi que ce soit - pyplot / pylab crée une figure dès que vous dessinez quelque chose, et la taille de la fenêtre contextuelle apparaît à fixer à ce stade.Si vous avez déjà créé la figure, vous pouvez le faire rapidement:
Pour propager le changement de taille dans une fenêtre GUI existante, ajoutez
forward=True
la source
imshow
, maintenant j'utilise ce code juste après avoir éliminé l'espace autour de la zone de traçage avecplt.subplots_adjust(left=0.0, right=1.0, bottom=0.0, top=1.0)
.fig.set_dpi(100)
.Les éléments suivants semblent fonctionner:
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.
la source
fig.set_size_inches(18.5, 10.5, forward=True)
travaillé.UTILISATION de plt.rcParams
Il existe également cette solution de contournement si vous souhaitez modifier la taille sans utiliser l'environnement de la figure. Donc, si vous utilisez
plt.plot()
par exemple, vous pouvez définir un tuple avec largeur et hauteur.Ceci est très utile lorsque vous tracez en ligne (par exemple avec IPython Notebook). Comme @asamaier l'a remarqué, il est préférable de ne pas placer cette déclaration dans la même cellule des déclarations d'importation.
Conversion en cm
Le
figsize
tuple accepte les pouces, donc si vous voulez le définir en centimètres, vous devez les diviser par 2,54. Consultez cette question .la source
plt.rcParams["figure.figsize"] = (20,3)
dans une cellule supplémentaire. Lorsque je l'appelle dans la même cellule que l'instruction import, elle est ignorée.Veuillez essayer un code simple comme suit:
Vous devez définir la taille de la figure avant de tracer.
la source
atplotlib.pyplot.figure
, ce que les autres ne disent pas aussi clairement. Je continue d'essayer des choses commematplotlib.figure
etmatplotlib.figure.Figure
plt.figure(figsize=(1,1))
est le mouvement crucial. Je vous remercie.Si vous cherchez un moyen de modifier la taille de la figure dans Pandas , vous pouvez par exemple:
où
df
est une trame de données Pandas. Ou, pour utiliser une figure ou des axes existantsSi vous souhaitez modifier les paramètres par défaut, vous pouvez procéder comme suit:
la source
Le premier lien dans Google pour
'matplotlib figure size'
est AdjustingImageSize ( cache Google de la page ).Voici un script de test de la page ci-dessus. Il crée des
test[1-3].png
fichiers de différentes tailles de la même image:Production:
Deux notes:
Les commentaires du module et la sortie réelle diffèrent.
Cette réponse permet de combiner facilement les trois images dans un fichier image pour voir la différence de taille.
la source
fig = plt.figure() default_size = fig.get_size_inches() fig.set_size_inches( (default_size[0]*2, default_size[1]*2) )
Vous pouvez simplement utiliser (depuis matplotlib.figure.Figure ):
À partir de Matplotlib 2.0.0, les modifications apportées à votre canevas seront immédiatement visibles, car le
forward
mot - clé par défaut estTrue
.Si vous souhaitez simplement modifier la largeur ou la hauteur au lieu des deux, vous pouvez utiliser
fig.set_figwidth(val)
oufig.set_figheight(val)
Ceux-ci mettront également à jour immédiatement votre toile, mais uniquement dans Matplotlib 2.2.0 et plus récent.
Pour les versions plus anciennes
Vous devez spécifier
forward=True
explicitement afin de mettre à jour en direct votre canevas dans des versions antérieures à ce qui est spécifié ci-dessus. Notez que les fonctionsset_figwidth
etset_figheight
ne prennent pas en charge leforward
paramètre dans les versions antérieures à Matplotlib 1.5.0.la source
Vous pouvez aussi utiliser:
la source
Essayez de commenter la
fig = ...
lignela source
Cela fonctionne bien pour moi:
Cela pourrait également aider: http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html
la source
Pour augmenter la taille de votre chiffre N fois, vous devez l'insérer juste avant votre pl.show ():
Il fonctionne également bien avec le bloc-notes ipython.
la source
Étant donné que Matplotlib ne peut pas utiliser le système métrique en mode natif, si vous souhaitez spécifier la taille de votre figure dans une unité de longueur raisonnable telle que les centimètres, vous pouvez faire ce qui suit (code de gns-ank ):
Ensuite, vous pouvez utiliser:
la source
Cela redimensionne la figure immédiatement 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):
la source
Généraliser et simplifier la réponse de psihodelia. Si vous souhaitez modifier la taille actuelle de la figure d'un facteur
sizefactor
Après avoir modifié la taille actuelle, il peut arriver que vous deviez affiner la disposition du sous-tracé . Vous pouvez le faire dans l'interface graphique de la fenêtre de figure, ou au moyen de la commande subplots_adjust
Par exemple,
la source
Une autre option, pour utiliser la fonction rc () dans matplotlib (l'unité est en pouces)
la source
Vous modifiez directement la taille de la figure en utilisant
la source
pyplot
n'a pas de méthode nomméeset_figsize
.