Warning: Undefined variable $position in /home/pystyles/pystyle.info/public_html/wp/wp-content/themes/lionblog/functions.php on line 4897

matplotlib – stem plot で離散データをグラフ化する方法について

matplotlib – stem plot で離散データをグラフ化する方法について

概要

matplotlib の stem plot で離散データ列を可視化する方法を解説します。

Advertisement

plt.stem – 離散データを描画する

stem plot は、垂直な線で離散データ列を可視化したグラフです。 名称は base から複数の stem が伸びている葉に由来します。

葉っぱ

stem([x,] y, linefmt=None, markerfmt=None, basefmt=None)
  • 引数
    • x: x の値一覧
    • y: y の値一覧
    • linefmt: 幹の線のスタイル
    • markerfmt: マーカーのスタイル
    • basefmt: 茎の線のスタイル
    • bottom: 茎の y 座標 (デフォルトは0)
    • label: ラベル
    • use_line_collection: warning が出るので、matplotlib 3.3 がリリースされるまでは True を指定しておきます。
  • 返り値
    • StemContainer: stem plot を構成するオブジェクト
In [1]:
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats

x = np.arange(20)
y = stats.poisson.pmf(x, mu=5)

fig, ax = plt.subplots()
ax.stem(x, y, use_line_collection=True)

plt.show()

幹の線、茎の線のスタイルを設定する

linefmt で幹の線のスタイル、basefmt で茎の線のスタイルを設定できます。 指定する方法は plot() の fmt と同じです。

In [2]:
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats

x = np.arange(20)
y = stats.poisson.pmf(x, mu=5)

fig, ax = plt.subplots()
ax.stem(x, y, linefmt="--", basefmt="k-", use_line_collection=True)

plt.show()

マーカーのスタイルを設定する

markerfmt でマーカーのスタイルを設定できます。 指定方法はこちらを参照してください。

In [3]:
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats

x = np.arange(20)
y = stats.poisson.pmf(x, mu=5)

fig, ax = plt.subplots()
ax.stem(x, y, markerfmt="kx", use_line_collection=True)

plt.show()

茎の y 座標を設定する

bottom で茎の線を引く y 座標の位置を指定できます。デフォルトでは y = 0 の位置に引かれます。

In [4]:
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats

np.random.seed(0)
x = np.random.uniform(2, 5, 20)

fig, ax = plt.subplots()
ax.stem(x, bottom=2, use_line_collection=True)

plt.show()
Advertisement

ラベルを設定する

label でラベルを設定できます。

In [5]:
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats

x = np.arange(20)
y1 = stats.poisson.pmf(x, mu=5)

fig, ax = plt.subplots()
ax.stem(x, y1, label="poisson", use_line_collection=True)
ax.legend()

plt.show()