2796

Matplotlib で描画した図のサイズを変更するにはどうすればよいですか?

4

24 に答える 24

1553

figure呼び出し署名を伝えます:

from matplotlib.pyplot import figure

figure(figsize=(8, 6), dpi=80)

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

于 2009-03-12T12:41:35.223 に答える
986

すでに図を作成している場合は、 を使用figure.set_size_inchesして図のサイズを調整できます。

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)

さらに、コメントでErik Shiltsが言及したように、figure.set_dpi「[s]図の解像度を1インチあたりのドット数で設定する」ためにも使用できます

fig.set_dpi(100)
于 2010-11-29T17:30:40.897 に答える
580

plt.rcParams の使用

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

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

これは、インラインでプロットする場合に非常に便利です (たとえば、IPython Notebookを使用)。asmaier が気付いたように、このステートメントを imports ステートメントの同じセルに配置しないことをお勧めします。

以降のプロットのためにグローバル Figure サイズをデフォルトにリセットするには、次のようにします。

plt.rcParams["figure.figsize"] = plt.rcParamsDefault["figure.figsize"]

cmへの変換

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

于 2017-01-18T10:55:51.607 に答える
421

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

以下はうまくいくようです:

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

これにより、Figure の幅は 5 インチ、高さは 10インチになります。

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

于 2008-12-01T21:28:56.927 に答える
170

Pandasで図のサイズを変更する方法を探している場合は、次のことができます。

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

dfPandas データフレームはどこにありますか。または、既存の Figure または Axes を使用するには:

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

デフォルト設定を変更する場合は、次のようにします。

import matplotlib

matplotlib.rc('figure', figsize=(10, 5))

詳細については、次のドキュメントをご覧くださいpd.DataFrame.plot

于 2016-09-29T12:54:32.643 に答える
85

Google の最初のリンク'matplotlib figure size'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 つの画像ファイルに簡単に結合して、サイズの違いを確認できます。

于 2008-12-02T16:01:32.843 に答える
44

これは私にとってはうまくいきます:

from matplotlib import pyplot as plt

F = plt.gcf()
Size = F.get_size_inches()
F.set_size_inches(Size[0]*2, Size[1]*2, forward=True) # Set forward to True to resize window along with plot in figure.
plt.show() # Or plt.imshow(z_array) if using an animation, where z_array is a matrix or NumPy array

このフォーラム投稿も役立つかもしれません: Figure ウィンドウのサイズ変更

于 2014-05-28T05:47:34.493 に答える
22

Figure のサイズを N 倍にするには、これをpl.show()の直前に挿入する必要があります。

N = 2
params = pl.gcf()
plSize = params.get_size_inches()
params.set_size_inches((plSize[0]*N, plSize[1]*N))

また、 IPythonノートブックでもうまく機能します。

于 2014-10-30T10:38:37.830 に答える
15

Matplotlibはメートル法をネイティブに使用できないため、図のサイズをセンチメートルなどの適切な長さの単位で指定する場合は、次のようにすることができます ( gns-ank のコード)。

def cm2inch(*tupl):
    inch = 2.54
    if isinstance(tupl[0], tuple):
        return tuple(i/inch for i in tupl[0])
    else:
        return tuple(i/inch for i in tupl)

次に、次を使用できます。

plt.figure(figsize=cm2inch(21, 29.7))
于 2016-08-03T18:04:36.290 に答える
13

これにより、図が描画された後でもすぐに図のサイズが変更されます (少なくとも Qt4Agg/TkAgg を使用しますが、Mac OS X ではありません - Matplotlib 1.4.0 を使用):

matplotlib.pyplot.get_current_fig_manager().resize(width_px, height_px)
于 2014-10-28T05:08:13.527 に答える
7

新しい figure を作成するとき、次のfigsize引数でサイズ (インチ単位) を指定できます。

import matplotlib.pyplot as plt
fig = plt.figure(figsize=(w,h))

既存の図を変更する場合は、次のset_size_inches()方法を使用します。

fig.set_size_inches(w,h)

デフォルトのFigure サイズ (6.4" x 4.8")を変更したい場合は、 "run commands" rcを使用します:

plt.rc('figure', figsize=(w,h))
于 2021-04-20T13:48:06.883 に答える
1
import random
import math
import matplotlib.pyplot as plt
start=-20
end=20
x=[v for v in range(start,end)]
#sigmoid function
def sigmoid(x):
    return 1/(1+math.exp(x))
plt.figure(figsize=(8,5))#setting the figure size
plt.scatter([abs(v) for v in x],[sigmoid(v) for v in x])
plt.scatter(x,[sigmoid(sigmoid(v)) for v in x])

シグモイド画像

于 2021-12-31T05:04:54.373 に答える