Come si cambia la dimensione delle figure disegnate con matplotlib?

Come si cambia la dimensione della figura disegnata con matplotlib?

figura vi dice la firma della chiamata:

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

figure(figsize=(1,1)) creerebbe un'immagine pollice per pollice, che sarebbe 80 per 80 pixel a meno che tu non dia anche un argomento dpi diverso.

Commentari (6)

Nota di decadenza: Come da guida ufficiale di Matplotlib, l'uso del modulo pylab non è più raccomandato. Considera invece di usare il modulo matplotlib.pyplot, come descritto da quest'altra risposta.

Il seguente sembra funzionare:

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

Questo rende la figura di 5 pollici di larghezza e 10 di altezza.

La classe Figure usa quindi questo come valore predefinito per uno dei suoi argomenti.

Commentari (6)

Il primo link in Google per 'matplotlib figure size'è AdjustingImageSize (Google cache della pagina).

Ecco uno script di test dalla pagina di cui sopra. Crea file test[1-3].png di diverse dimensioni della stessa immagine:

#!/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.

Output:

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.]

Due note:

  1. I commenti del modulo e l'output effettivo differiscono.

  2. Questa risposta permette di combinare facilmente tutte e tre le immagini in un unico file immagine per vedere la differenza di dimensioni.

Commentari (1)