Matplotlibで離散データの表示

Pythonで離散データを表示するためのmatplotlibの使い方です。

離散データの表示イメージ

matplotlibでplotでデータを表示すると、線データで表示されます。

import numpy as np
import matplotlib.pyplot as plt

xdata = np.linspace(0,10,50)
ydata = np.sin(xdata)

plt.plot(xdata,ydata)
plt.grid()
plt.show()

でも実際にはコンピュータで扱っているので離散データなので、データ点を〇で表しつつ、ベースラインからそのデータまで軸線が伸びているような、そんなデータ表示がしたいのです。

離散データの表示イメージ

離散データの表示

stemを使用すればデータ点、ベースライン、軸線の表示が出来ます。

import matplotlib.pyplot as plt

# 離散データ表示用関数
def showDiscreteData(x,y):
    markerline, stemline, baseline = plt.stem(x, y)
    plt.setp(markerline, marker='o', markeredgewidth=2, markersize=8, color='black', markerfacecolor='white', zorder=3)
    plt.setp(stemline, color='green', zorder=2, linewidth=1.0)
    plt.setp(baseline, color='blue', zorder=1)
    plt.grid(True)
    plt.xlabel('n')
    plt.ylabel('y [n]')
    plt.show()

“plt.stem”の戻り値である、markerline, stemline, baselineを使用します。

“plt.setp”関数でその戻り値を利用してそれぞれのパラメータを設定します。

それから、markerline, stemline, baselineの表示する順番を”zorder”のパラメータで指定しています。マーカーを一番上に表示したいので、”zorder=3″と最も後の数字に設定しています。

showDiscreteData関数の表示

先ほど定義した関数を使って、\(Sin\)関数のデータを表示させてみます。

import numpy as np
import matplotlib.pyplot as plt

xdata = np.linspace(0,10,20)
ydata = np.sin(xdata)

showDiscreteData(xdata,ydata)

こんな感じでうまく表示できました。

ベースラインを青、軸線を緑にしているので、このあたりの設定はお好みで使用してくださいね。

matplotlib.pyplot.stem — Matplotlib 3.4.3 documentation

コメント

タイトルとURLをコピーしました