Wie kann man die Größe der mit Matplotlib gezeichneten Figuren ändern?

Wie kann man die Größe der mit Matplotlib gezeichneten Figur ändern?

In Abbildung sehen Sie die Signatur des Anrufs:

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

figure(figsize=(1,1))` würde ein Bild im Format Inch-by-Inch erzeugen, was 80 x 80 Pixel entspricht, es sei denn, Sie geben auch ein anderes dpi-Argument an.

Kommentare (6)

Hinweis zur Abschaffung: Wie im offiziellen Matplotlib-Leitfaden beschrieben, wird die Verwendung des Moduls pylab nicht mehr empfohlen. Bitte verwenden Sie stattdessen das Modul matplotlib.pyplot, wie in dieser anderen Antwort beschrieben.

Das Folgende scheint zu funktionieren:

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

Dies macht die Figur 5 Zoll breit und 10 Zoll hoch.

Die Klasse Figure verwendet dies dann als Standardwert für eines ihrer Argumente.

Kommentare (6)

Der erste Link in Google für 'matplotlib figure size' ist AdjustingImageSize (Google cache of the page).

Hier ist ein Testskript von der oben genannten Seite. Es erzeugt "test[1-3].png"-Dateien in verschiedenen Größen desselben Bildes:

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

Ausgabe:

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

Zwei Noten:

  1. Die Kommentare des Moduls und die tatsächliche Ausgabe weichen voneinander ab.

  2. Diese Antwort ermöglicht es, alle drei Bilder in einer Bilddatei zu kombinieren, um die Größenunterschiede zu sehen.

Kommentare (1)