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で階段状のグラフを作成する方法を紹介します。
ではでは今回はこんな感じで。
コメント