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

【Matplotlib】pylabのspecgram()と同じ方法でスペクトログラムをプロットする手順

pylabの specgram() と同じ方法でスペクトログラムをプロットするには、以下の手順に従います。

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • numpy を使って ts1s2nsexNFFTFs のデータ点を作成します。
  • subplots() メソッドで nrows=2 を指定し、新しい図を作成(または既存の図をアクティブ化)します。
  • plot() メソッドを使って tx のデータ点をプロットします。
  • 現在の線スタイルでグリッドを表示します。
  • 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()

出力結果

【Matplotlib】pylabのspecgram()と同じ方法でスペクトログラムをプロットする手順

このコードでは、まず時間領域の波形(上段)をプロットし、次に同じデータに対して specgram() を用いてスペクトログラム(下段)を描画しています。NFFT=1024 はFFTの窓長、Fs はサンプリング周波数、noverlap=900 は隣接するセグメント間のオーバーラップ数を表します。これにより、時間の経過とともに周波数成分がどのように変化しているかを視覚的に確認できます。

  1. Matplotlibで対数プロットのマイナーティック(補助目盛り)を無効にする方法

    Matplotlibで対数(ログ)プロットのマイナーティック(補助目盛り)を無効にしたい場合は、minorticks_off()メソッドを使用します。対数スケールでは補助目盛りが自動的に表示されますが、このメソッドを呼び出すことでグラフを見やすくすっきりさせることができます。 実装の手順 図のサイズを設定し、サブプロット間および周囲のパディングを調整します。 numpyを使用してxとyのデータポイントを作成します。 現在の図に対して、インデックス1の位置にサブプロットを追加します。 xとyのデータポイントを赤色(color=red)でプロットします。 x軸のスケールを「log」に設定します。

  2. MatplotlibでLaTeX出力と同じフォントを表示する方法

    MatplotlibのグラフでLaTeX風フォントを使用する方法Matplotlibでグラフを作成する際、軸ラベルやタイトルをLaTeXと同じ数式フォントで表示したいケースは多くあります。LaTeX形式($...$ で囲まれた記法)を使えば、数式を美しく描画できます。ここでは、sin関数のカーブをLaTeX表記でプロットし、タイトルにカスタムフォントを適用する手順を紹介します。実装の手順NumPyを使って x 軸のデータポイントを作成します。y = sin(x) に基づいて y 軸のデータポイントを作成します。LaTeX表記(r$\sin (x)$)を使用して、x と y の曲線をプロットしま