Hoe verander je de grootte van figuren getekend met matplotlib?

Hoe verander je de grootte van een figuur getekend met matplotlib?

figuur vertelt je de oproep handtekening:

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

figure(figsize=(1,1)) zou een inch-bij-inch afbeelding maken, wat 80-bij-80 pixels zou zijn, tenzij je ook een ander dpi argument geeft.

Commentaren (6)

Deprecatie opmerking: Volgens de officiële Matplotlib gids, wordt het gebruik van de pylab module niet langer aanbevolen. Overweeg in plaats daarvan het gebruik van de matplotlib.pyplot module, zoals beschreven in dit andere antwoord.

Het volgende lijkt te werken:

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

Dit maakt de figuur 5 inches breed en 10 inches hoog.

De Figure klasse gebruikt dit dan als de standaardwaarde voor één van zijn argumenten.

Commentaren (6)

De eerste link in Google voor 'matplotlib figure size' is AdjustingImageSize (Google cache van de pagina).

Hier's een testscript van de bovenstaande pagina. Het maakt test[1-3].png bestanden van verschillende grootte van dezelfde afbeelding:

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

Uitvoer:

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

Twee notities:

  1. De module opmerkingen en de werkelijke output verschillen.

  2. Dit antwoord maakt het gemakkelijk om de drie afbeeldingen in één afbeeldingsbestand te combineren om het verschil in grootte te zien.

Commentaren (1)