PR

matplotlibの基本: ステム(茎)グラフの描画方法

matplotlib

本記事では、Pythonのデータ可視化ライブラリであるmatplotlibのstemに焦点を当てて解説します。stemは、離散データのプロットに特化した便利な機能であり、特に信号処理や数学の分野でよく使用されます。まずは基本的な使い方から始めて、その後、カスタマイズや応用例についても解説します。

スポンサーリンク

matplotlibとは

プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリである。オブジェクト指向のAPIを提供しており、様々な種類のグラフを描画する能力を持つ。描画できるのは主に2次元のプロットだが、3次元プロットの機能も追加されてきている。描画したグラフを各種形式の画像(各種ベクトル画像形式も含む)として保存することもできる(Wiki参照)

matplotlib – Wikipedia
スポンサーリンク

基本のプロット

まずは、stem関数の基本的な使い方を見てみましょう。以下のコードは、与えられたデータポイントを使って離散データのプロットを行うシンプルな例です。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [1, 8, 3, 6, 5]

plt.stem(x, y)
plt.show()

このコードでは、xとyに与えられたデータポイントを使って、stem関数を用いて離散データのプロットを行っています。stem関数は、与えられたxとyの値を棒グラフとしてプロットします。

折れ線グラフや棒グラフでプロットしたい場合はこちらを参考にしてください。

xとyの同じインデックスつまり(1,1)、(2,8)、(3,3)、(4,6)、(5,5)にプロットされています。

問題なくプロットされてます。では、前回同様に見た目をカスタマイズしていきます。

スポンサーリンク

見た目のカスタマイズ

さまざまなカスタマイズが可能です。例えば、マーカーやラインのスタイル、色などを指定することができます。

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 8, 3, 6, 5]

plt.stem(x, y, linefmt='--', markerfmt='o', basefmt=' ', use_line_collection=True)
plt.legend() #凡例
plt.show()

Tips:主要なカスタマイズキーワード

グラフ作成時に使用できる引数オプションが非常に多くあります。が必要最低限テーブルにまとめた分をおさえて記載します。

kywd入力例備考
x,y[1,2,3,4,5] または 事前に定義したlistなどarray形式のもの
※必須
orientation orientation=’vertical’ステムの方向
verticalは垂直方向
horizontalは水平方向
line関連
linefmtlinefmt=”blue”垂直線の色や線種
-は実線
–は破線
-.は一点鎖線
:は点線
bottombottom=0ベースラインの位置 
marker関連
markerfmtmarkerfmt=”s”マーカーの形
指定しないと○
*は星形など様々指定可
labellabel=”label1″凡例名

色見本

color example code: named_colors.py — Matplotlib 2.0.2 documentation

マーカー見本

lines_bars_and_markers example code: marker_reference.py — Matplotlib 2.0.2 documentation

スポンサーリンク

信号処理

stem関数は、信号処理の分野でよく使用されます。例えば、離散時間システムのインパルス応答や周波数応答を可視化する際に活用されます。以下はその一例です。

import numpy as np
import matplotlib.pyplot as plt

# インパルス応答の生成
t = np.linspace(0, 1, 100)
h = np.exp(-5*t) * np.sin(10*np.pi*t)

# インパルス応答のプロット
plt.stem(t, h, linefmt='--', markerfmt='.', basefmt='C3-', use_line_collection=True)
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.title('Impulse Response')
plt.grid(True)
plt.show()

このコードでは、指数的に減衰するインパルス応答を生成し、stem関数を使ってプロットしています。これにより、インパルス応答の特性を視覚的に把握することができます。

スポンサーリンク

まとめ

本記事では、matplotlibのstem関数について解説しました。stem関数を使うことで、離散データを直感的に可視化することができます。また、カスタマイズや信号処理の応用例についても紹介しました。これを参考にして、データの可視化や信号処理に役立ててください。

コメント

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