matplotlibで描画される図形のサイズをどのように変更しますか?

2008年12月02日に質問されました。  ·  閲覧回数 3.2M回  ·  ソース

tatwright picture
2008年12月02日

matplotlibで描画される図形のサイズをどのように変更しますか?

回答

Jouni K. Seppänen picture
2009年03月12日
1210

は、呼び出しの署名を示しています。

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

figure(figsize=(1,1))は、インチごとの画像を作成します。これは、別のdpi引数も指定しない限り、80 x80ピクセルになります。

Pete picture
2010年11月30日
793

すでにフィギュアを作成している場合は、これをすばやく行うことができます。

fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)

サイズの変更を既存のGUIウィンドウに伝播するには、 forward=True追加します

fig.set_size_inches(18.5, 10.5, forward=True)
tatwright picture
2008年12月02日
383

非推奨の注意:
公式のMatplotlibガイドによると、 pylabモジュールの使用は推奨されなくなりました。 この他の回答で説明されているように、代わりにmatplotlib.pyplotモジュールの使用を検討してください。

以下は機能しているようです。

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

これにより、フィギュアの幅は5インチ、高さは10インチになります。

次に、Figureクラスは、これを引数の1つのデフォルト値として使用します。

G M picture
2017年01月18日
379

plt.rcParamsの使用

フィギュア環境を使用せずにサイズを変更したい場合のこの回避策もあります。 したがって、たとえばplt.plot()を使用している場合は、幅と高さのタプルを設定できます。

import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)

これは、インラインでプロットする場合(IPython Notebookなど)に非常に便利です。 @asamaierが気付いたように、このステートメントをimportsステートメントの同じセルに入れない方が望ましいです。

cmへの変換

figsizeタプルはインチを受け入れるため、センチメートルで設定する場合は、2.54で割る必要があります。この質問を参照してください。

iPAS picture
2014年06月06日
300

次のような簡単なコードを試してください。

from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()

プロットする前に、フィギュアのサイズを設定する必要があります。

Kris picture
2016年09月29日
120

パンダでフィギュアのサイズを変更する方法を探している場合は、次のようにすることができます。

df['some_column'].plot(figsize=(10, 5))

ここで、 dfはPandasデータフレームです。 または、既存の図形または軸を使用するには

fig, ax = plt.subplots(figsize=(10,5))
df['some_column'].plot(ax=ax)

デフォルト設定を変更したい場合は、次のようにすることができます。

import matplotlib

matplotlib.rc('figure', figsize=(10, 5))
jfs picture
2008年12月03日
77

'matplotlib figure size' Googleの最初のリンクは、 AdjustingImageSizeページのGoogleキャッシュ)です。

これが上のページのテストスクリプトです。 同じ画像の異なるサイズのtest[1-3].pngファイルを作成します。

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

出力:

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

2つのメモ:

  1. モジュールのコメントと実際の出力は異なります。

  2. この回答により、3つの画像すべてを1つの画像ファイルに簡単に組み合わせて、サイズの違いを確認できます。

amalik2205 picture
2019年07月09日
64
import matplotlib.pyplot as plt
plt.figure(figsize=(20,10))
plt.plot(x,y) ## This is your plot
plt.show()

次のものも使用できます。

fig, ax = plt.subplots(figsize=(20, 10))
River picture
2017年10月30日
50

簡単に使用できます( matplotlib.figure.Figureから):

fig.set_size_inches(width,height)

Matplotlib 2.0.0以降、 forwardキーワードのデフォルトはTrueため、キャンバスへの変更はすぐに表示されます。

両方ではなくまたは高さだけを

fig.set_figwidth(val)またはfig.set_figheight(val)

これらもすぐにキャンバスを更新しますが、Matplotlib2.2.0以降のみです。

古いバージョンの場合

上記で指定されたバージョンよりも古いバージョンでキャンバスをライブ更新するには、 forward=True明示的に指定する必要があります。 set_figwidthおよびset_figheight関数は、Matplotlib 1.5.0より古いバージョンのforwardパラメーターをサポートしていないことに注意してください。

Renaud picture
2014年03月14日
38

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