【matplotlib】stairs関数でステップワイズグラフ(階段状のグラフ)を作成する方法[Python]

  • URLをコピーしました!

matplotlib

前回、matplotlibのベクトル場を表示するquiverを紹介しました。

今回はmatplotlibのstairs関数でステップワイズグラフ(階段状のグラフ)を作成する方法を紹介します。

それでは始めていきましょう。

plt.stairsの使い方

plt.stairsを用いてステップワイズグラフ(階段状のグラフ)を作成するには数値のリストを準備します。

そして「plt.stairs(リスト)」で表示することができます。

import matplotlib.pyplot as plt

data = [1.1, 1.9, 2.2, 2.8, 3.3, 3.7, 4.4, 4.6, 5.5, 6.0]

fig = plt.figure()
plt.clf()

plt.stairs(data)

plt.show()

実行結果

X軸の値は指定しない場合は自動で0から振られます。

X軸の値を指定したい場合は2つ目の引数にX軸の値のリストを指定するか、「edges=X軸の値のリスト」を引数として追加します。

ただしX軸の値のリストの要素数はY軸の値のリストの要素数より一つ多くします。

つまりY軸の値が10個ある場合は、X軸の値は11個用意します。

そしてX軸の値のリストの最後の要素がゼロ点に戻るX軸の値となります。

import matplotlib.pyplot as plt

data = [1.1, 1.9, 2.2, 2.8, 3.3, 3.7, 4.4, 4.6, 5.5, 6.0]

edges = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

fig = plt.figure()
plt.clf()

plt.stairs(data, edges)

plt.show()

実行結果

ちなみにX軸の値のリストの要素数とY軸の値のリストの要素数が同じ場合エラーとなります。

import matplotlib.pyplot as plt

data = [1.1, 1.9, 2.2, 2.8, 3.3, 3.7, 4.4, 4.6, 5.5, 6.0]

edges = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

fig = plt.figure()
plt.clf()

plt.stairs(data, edges)

plt.show()

実行結果
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[6], line 10
      7 fig = plt.figure()
      8 plt.clf()
---> 10 plt.stairs(data, edges)
     12 plt.show()

(中略)

ValueError: Size mismatch between "values" and "edges". Expected `len(values) + 1 == len(edges)`, but `len(values) = 10` and `len(edges) = 10`.

X軸の値のリストは等間隔でなくても問題ありません。

import matplotlib.pyplot as plt

data = [1.1, 1.9, 2.2, 2.8, 3.3, 3.7, 4.4, 4.6, 5.5, 6.0]

edges = [5, 7, 9, 10, 11, 12, 13, 14, 15, 20, 25]

fig = plt.figure()
plt.clf()

plt.stairs(data, edges)

plt.show()

実行結果

複数のグラフを同時に表示する場合

複数のグラフを同時に表示するには、1次元の数値のリストを複数用意して、一つずつ「plt.stairs()」に渡します。

import matplotlib.pyplot as plt

data1 = [1, 2, 3, 4, 5]
data2 = [2, 4, 6, 8, 10]

fig = plt.figure()
plt.clf()

plt.stairs(data1)
plt.stairs(data2)

plt.show()

実行結果

ちなみに2つのデータを同時に表示しようとデータを2次元リストにするとエラーとなります。

import matplotlib.pyplot as plt

data = [[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]]

fig = plt.figure()
plt.clf()

plt.stairs(data)

plt.show()

実行結果
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[1], line 8
      5 fig = plt.figure()
      6 plt.clf()
----> 8 plt.stairs(data)
     10 plt.show()

(中略)

ValueError: Size mismatch between "values" and "edges". Expected `len(values) + 1 == len(edges)`, but `len(values) = 10` and `len(edges) = 3`.

グラフを横向きにする

グラフを横向きにするには「orientation=”horizontal”」をオプション引数として追加します。

import matplotlib.pyplot as plt

data = [1.1, 1.9, 2.2, 2.8, 3.3, 3.7, 4.4, 4.6, 5.5, 6.0]

fig = plt.figure()
plt.clf()

plt.stairs(data, orientation="horizontal")

plt.show()

実行結果

ベースラインの位置の変更

ベースラインの位置を変更するには「baseline=値」をオプション引数に追加します。

デフォルト値はもちろん「0」です。

import matplotlib.pyplot as plt

data = [1.1, 1.9, 2.2, 2.8, 3.3, 3.7, 4.4, 4.6, 5.5, 6.0]

fig = plt.figure()
plt.clf()

plt.stairs(data, baseline=3)

plt.show()

実行結果

グラフを塗りつぶす

グラフを塗りつぶすには「fill=True」をオプション引数として追加します。

import matplotlib.pyplot as plt

data = [1.1, 1.9, 2.2, 2.8, 3.3, 3.7, 4.4, 4.6, 5.5, 6.0]

fig = plt.figure()
plt.clf()

plt.stairs(data, fill=True)

plt.show()

実行結果

色の変更

線の色を変更するには「color=色」をオプション引数として追加します。

import matplotlib.pyplot as plt

data = [1.1, 1.9, 2.2, 2.8, 3.3, 3.7, 4.4, 4.6, 5.5, 6.0]

fig = plt.figure()
plt.clf()

plt.stairs(data, color="tab:red")

plt.show()

実行結果

さらに塗りつぶしの色を変更する場合、「color=色」とあわせて「fill=True」をオプション引数に追加します。

import matplotlib.pyplot as plt

data = [1.1, 1.9, 2.2, 2.8, 3.3, 3.7, 4.4, 4.6, 5.5, 6.0]

fig = plt.figure()
plt.clf()

plt.stairs(data, color="tab:red", fill=True)

plt.show()

実行結果

線の色と塗りつぶしの色を別の色にすることはできない様です。

次回はmatplotlibのstepで階段状のグラフを作成する方法を紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする