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.9.2 documentation
コメント