MatplotlibでX軸に正しい周波数を表示して信号のFFTをプロットする方法
matplotlibで信号のFFT(高速フーリエ変換)をプロットする際、X軸に正しい周波数を表示することは非常に重要です。ここでは、numpyのnp.fft.fftとnp.fft.fftfreqを組み合わせて、正確な周波数軸を持つFFTスペクトルを作成する方法を解説します。
手順
図のサイズを設定し、サブプロット間および周囲のパディングを調整します。
2つの変数 N(サンプル数)と m(サイクル数)を初期化し、nu(正規化された周波数)を計算します。
numpyを使って信号(正弦波)を作成し、1次元離散フーリエ変換を計算します。
np.fft.fftfreqで離散フーリエ変換のサンプル周波数を取得します。
周波数 freq とフーリエ変換のデータ点を実部の2乗+虚部の2乗(パワースペクトル)としてプロットします。
plt.show() メソッドで図を表示します。
コード例
import numpy as np import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True N = 256 t = np.arange(N) m = 4 nu = float(m)/N signal = np.sin(2*np.pi*nu*t) ft = np.fft.fft(signal) freq = np.fft.fftfreq(N) plt.plot(freq, ft.real**2 + ft.imag**2) plt.show()
コードのポイント
このコードでは、まずサンプル数 N=256 の時間配列を作成し、m=4 サイクル分の正弦波信号を生成しています。正規化された周波数 nu は m/N で求められます。
np.fft.fft(signal) は複素数の配列を返すため、実部の2乗と虚部の2乗を足し合わせることでパワースペクトルを計算しています。さらに np.fft.fftfreq(N) が各FFTビンに対応する周波数を返すため、これをX軸に使うことで、正しい周波数スケールでスペクトルを可視化できます。
出力
上記のコードを実行すると、以下のようなグラフが出力されます。

-
Matplotlibでカラーバー付き2D行列をPythonでプロットする方法
Pythonでカラーバー付きの2D行列をプロットするには、numpyを使って2次元配列(行列)を作成し、そのデータをimshow()メソッドに渡すのが最も簡単な方法です。手順numpyを使用して data2D という2次元配列を作成します。imshow() メソッドを使い、データを画像として(2次元の正規ラスタ上に)表示します。colorbar() メソッドに imshow() が返す ScalarMappable インスタンスを渡し、カラーバーを作成します。これにより、色と数値の対応関係がひと目でわかるようになります。図を表示するには、show() メソッドを使用します。コード例import
-
MatplotlibでNaN値を含むデータをプロット・操作する方法を解説
MatplotlibでNaN値をプロット・操作する手順 Matplotlibでは、NaN(欠損値)を含むデータもそのまま可視化できます。基本的な流れは以下の3ステップです。 NumPyを使って、NaN値をいくつか含むデータ(配列)を作成します。 imshow()メソッドを使用し、カラーマップとステップ1で作成したデータを指定して、2次元の正規ラスタ上に画像として表示します。デフォルトでは、NaNの部分は自動的に空白(マスクされた領域)として描画されます。 作成した図を画面に表示するには、show()メソッドを呼び出します。 コード例 import numpy as np from matp