Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Matplotlibでスペクトログラムの上にX軸グリッドを表示する方法

PythonのMatplotlibでスペクトログラムの上にX軸のグリッドを表示するには、grid()メソッドを使用します。この記事では、信号データとそのスペクトログラムの両方にX軸グリッドを重ねて描画する手順を、具体的なコード例とともに解説します。

実装の手順

  • 図のサイズを設定し、subplots間および周囲のパディングを調整します。
  • numpyを使用して、t、s1、s2、nse、x、NFFT、Fsの各データポイントを作成します。
  • subplots()メソッド(nrows=2)で新しい図を作成するか、既存の図をアクティブにします。
  • plot()メソッドでtとxのデータポイントを折れ線グラフとしてプロットします。
  • 現在の線スタイルでグリッドをレイアウトします。
  • X軸のマージンを設定します。
  • specgram()メソッドでスペクトログラムをプロットします。
  • 点線スタイルや色などのプロパティを指定してグリッドをレイアウトします。
  • show()メソッドで図を表示します。

コード例

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

dt = 0.0005
t = np.arange(0.0, 20.0, dt)

s1 = np.sin(2 * np.pi * 100 * t)
s2 = 2 * np.sin(2 * np.pi * 400 * t)
s2[t <= 10] = s2[12 <= t] = 0

nse = 0.01 * np.random.random(size=len(t))
x = s1 + s2 + nse
NFFT = 1024
Fs = int(1.0 / dt)

fig, (ax1, ax2) = plt.subplots(nrows=2)
ax1.plot(t, x)
ax1.grid(axis="x", ls="dotted", lw=2, color="red")
ax1.margins(x=0)

Pxx, freqs, bins, im = ax2.specgram(x, NFFT=NFFT, Fs=Fs, noverlap=900)
ax2.grid(axis="x", ls="dotted", lw=2, color="red")
plt.show()

出力結果

Python Matplotlibでスペクトログラムの上にX軸グリッドを表示する方法

コードのポイント

この例では、100Hzの正弦波(s1)と400Hzの正弦波(s2)にランダムノイズ(nse)を加えた合成信号xを作成しています。上段のサブプロット(ax1)には元の波形を、下段のサブプロット(ax2)にはspecgram()によるスペクトログラムを表示しています。

グリッドの表示にはgrid(axis="x", ...)と指定することでX軸方向のみにグリッドを引くことができ、ls(線種)、lw(線幅)、color(色)の各パラメータで見た目をカスタマイズできます。これにより、時間軸上のどの位置にどの周波数成分が現れているかを視覚的に確認しやすくなります。

  1. 【Python】MatplotlibでX軸の値(目盛りラベル)を設定する方法

    Python の Matplotlib でグラフの X 軸の値(目盛りラベル)を自由に設定したい場合は、plt.xticks() メソッドを使うのが最も簡単です。以下の手順で実装できます。 X軸の値を設定する手順 x と y のデータポイントを格納する2つのリストを作成します。 range(len(x)) を使って、目盛りの基準となるインデックス(xticks の範囲)を取得します。 plot() メソッドで、インデックスのリストと y データを使って折れ線グラフを描画します。 xticks() メソッドを使い、デフォルトの目盛りを実際の X 軸の値に置き換えます。 show() メソッドで

  2. PythonのMatplotlibで円グラフを作成・表示する方法【初心者向け解説】

    Matplotlibは、データ可視化のために広く利用されている人気のPythonライブラリです。データの可視化は分析において非常に重要なステップであり、複雑な数値計算の結果を目で見て理解しやすくしてくれます。数値を一つひとつ確認しなくても、データ全体の傾向や構成を直感的に把握できるため、定量的な洞察を効果的に伝える手段として活用されています。Matplotlibは主に2次元のグラフやプロットを作成するために使用され、オブジェクト指向のAPIを備えているため、Pythonアプリケーションへの組み込みも容易です。IPythonシェル、Jupyter Notebook、Spyderなどの開発環境と組