Python Code Notes

Information by python engineer

【matplotlib.pyplot】グラフを装飾する方法【Python】

グラフを装飾

matplotlib.pyplotで作成したグラフを装飾する方法をまとめます。

グラフ表示するデータの準備

最初に以下のコードを実行し、表示させるグラフのデータを準備します。モジュールのインポートも一緒に実行しています。

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)

以下の例では、subplots関数を用いてグラフオブジェクトを生成しています。subplots関数を用いたグラフの描画については、以下の記事を参照してください。

グラフタイトル・軸ラベルの設定

Axesオブジェクトのsetメソッドを用いて以下のプロパティを設定することで、グラフのタイトルと各軸ラベルを指定できます。

property 内容
title グラフタイトル
xlabel x軸ラベル
ylabel y軸ラベル


例:

fig, ax = plt.subplots()
ax.set(xlabel = "x label", ylabel = "y label", title="example")
ax.plot(x, y)

出力:

f:id:vigilantPotato:20190713065105p:plain

グラフのタイトルと、各軸にラベルが表示されました。

また、Axesオブジェクトのset_xlabel、set_ylabel、set_titleメソッドを用いても同じことができます。

例:

fig, ax = plt.subplots()
ax.set_xlabel("x label")
ax.set_ylabel("y label")
ax.set_title("example")
ax.plot(x, y)

軸範囲の設定

Axesオブジェクトのsetメソッドを用いて以下のプロパティを設定することで、表示する軸の範囲を指定できます。

property 内容
xlim x軸の範囲 (下限, 上限)
ylim y軸ラベル (下限, 上限)


例:

fig, ax = plt.subplots()
ax.set(xlim=(0,3), ylim = (-5,2))
ax.plot(x, y)

出力:

f:id:vigilantPotato:20190713065137p:plain

表示するx軸の範囲を0~3に、y軸の範囲を-5~2に設定することができました。

複数グラフを重ねて表示

Axesオブジェクトに対してグラフ描画メソッド(以下の例ではplot)を複数回実行することで、複数のグラフを重ねて表示することができます。


例:

fig, ax = plt.subplots()
ax.plot(x, y)
ax.plot(x, 2*y)

出力:

f:id:vigilantPotato:20190713065232p:plain

凡例の表示

Axesオブジェクトのlegendメソッドを用いて、グラフの凡例を表示することができます。

但し、グラフ描画メソッド実行時に、オプションでラベルを設定しておく必要があります。


例:

fig, ax = plt.subplots()
ax.plot(x, y, label="y")
ax.plot(x, 2*y, label="2y")
ax.legend()

出力:

f:id:vigilantPotato:20190713065256p:plain

設定したラベルが凡例として表示されました。

凡例の位置は、legendメソッドのlocオプションで文字列または整数コードを設定することで指定できます。locオプションで指定できる内容は以下の通りです。

文字列 コード
best 0
upper right 1
upper left 2
lower left 3
lower right 4
right 5
center left 6
center right 7
lower center 8
upper center 9
center 10

例:

ax.legend(loc="lower right")

出力:

f:id:vigilantPotato:20190713065319p:plain

グリッドの追加

Axesオブジェクトのgridメソッドを用いて、グラフ内にグリッドを表示することができます。

例:

fig, ax = plt.subplots()
ax.plot(x, y)
ax.grid()

出力:

f:id:vigilantPotato:20190713065349p:plain

gridメソッドのlsオプションでグリッドの線種も指定できます。

例:グリッドを点線にする

ax.grid(ls="--")

出力:

f:id:vigilantPotato:20190713065409p:plain

[↑ 目次へ]