※記事内に商品プロモーションを含むことがあります。
はじめに
matplotlibライブラリを用いて、オブジェクト指向スタイルでグラフを作成する。
環境
ソフトウェア | バージョン |
---|---|
spyder | 3.2.3 |
python | 3.6.2 |
matplotlib | 2.0.2 |
matplotlibのオブジェクト指向
matplotlibにおいて、グラフを作成するための主なクラスはfigureとaxesである。
figureオブジェクトは、グラフを表示するためのウィンドウに相当する。axesオブジェクトはグラフそのものである。1つのfigureオブジェクト上に複数のaxesオブジェクトを表示できる。
まず、pyplotモジュールを次のようにインポートする。
|
|
figure, axesオブジェクトの作成方法はいくつかある。
- add_axesメソッドを使う
|
|
- add_subplotメソッドを使う
|
|
- subplotsメソッドを使う
|
|
実行すると、いずれも次のグラフが表示される(大きさは異なる場合がある)。
各関数・メソッドの説明を次節に示す。
figure, axesオブジェクトを作成する関数・メソッド
plt.figure()
plt.figure()は、figureオブジェクトを返す。
|
|
主な引数の型と意味を下表に示す。
引数 | 型 | 意味 |
---|---|---|
num | int or str | figureの番号または名前。指定しなければ順に加算される。 |
figsize | touple of int | 図の幅と高さを指定(単位:インチ) |
dpi | int | 解像度 |
facecolor | 背景色 | |
edgecolor | 境界の色 |
例:図の幅・高さをそれぞれ4, 3インチとし、背景を灰色にする。
|
|
figure.add_axes()
figure.add_axes()は、figure上に1個のaxesオブジェクトを作成する。
|
|
主な引数の意味を下表に示す。
引数 | 型 | 意味 |
---|---|---|
rect | list or touple | axesの位置・大きさを指定 |
projection | str | 投影方法(任意) |
polar | bool | Trueなら極座標表示(任意) |
rectは、4つのfloatでaxesの[左端, 下端, 幅, 高さ]を指定する。
projection引数には、以下の投影方法を指定できる。
引数 | 意味 |
---|---|
“aitoff” | エイトフ図法 |
“hammer” | ハンメル図法 |
“lambert” | ランベルト図法 |
“mollweide” | モルワイデ図法 |
“polar” | 極座標 |
“rectilinear” | 心射方位図法 |
figure.add_subplot()
figure.add_subplot()は、figure上に1個のaxesオブジェクトを格子状に作成する。
|
|
argsは可変長の引数を表し、「3つの整数を持つタプル」または「3桁の整数」である。
タプルの値を(I, J, K)とすると、I行J列の格子のK番目の位置にaxesを作成する。
タプル(I, J, K)は、3つの整数をIJKと並べた場合に等しい。
例:2行1列で2つのグラフを出力する。
|
|
plt.subplots()
plt.subplots()は次の2つのオブジェクトを作成する。
- figureオブジェクト
- axesオブジェクトの配列(または単体のaxesオブジェクト)
|
|
主な引数の意味を以下に示す。
nrows, ncols
: int型
グラフグリッドの行数・列数。
sharex, sharey
: bool or {“none”, “all”, “row”, “col”}
複数のグラフのx, y軸の範囲(xlim, ylim)の共有。
- True or “all”: 全グラフで軸範囲を共有。
- False or “none”: 各グラフの軸範囲は独立。
- “row”: 各行のグラフが軸範囲を共有。
- “col”: 各列のグラフが軸範囲を共有。
squeeze
: bool
axesオブジェクトの返し方を指定。
- Falseの場合、axesオブジェクトを常に2次元配列で返す。
- Trueの場合、nrows, ncolsの値によって、axesオブジェクト配列の次元を最小限にする。
・nrows=ncols=1のとき、直接axesオブジェクトを返す。
・nrowsとncolsの片方のみ1のとき、axesオブジェクトを1次元配列で返す。
・nrowsとncolsの両方が2以上のとき、axesオブジェクトを2次元配列で返す。
subplot_kw
: dict型
figure.add_subplot()のパラメータを指定する。
**fig_kw
:
plt.figure()のパラメータを指定する。
例:2行2列のaxesオブジェクトを作成し、x軸の範囲は同じ列のグラフで共通、y軸の範囲は全グラフで共通とする。また、背景色を薄灰色にする(plt.figure()のパラメータ)。
|
|
実行結果 変数axはaxesオブジェクトの2x2配列になっている。
|
|
参考リンク
matplotlib.pyplot.figure — Matplotlib 3.3.3 documentation
matplotlib.pyplot.subplot — Matplotlib 3.3.3 documentation
matplotlib.pyplot.subplots — Matplotlib 3.3.3 documentation