が、私はこの質問への応答を検討している:How would I iterate over a list of files and plot them as subplots on a single figure?は、forループ内からの単一の図に複数のプロットをプロット - Pythonの
は、しかし、私の目標を達成するためにどのように賢く何もしていません。異なるx軸を持つ複数のデータセットをPythonの1つのFigureにプロットしたいと思います。私はデータセットにFFTを実行し、次に3つのButterworthフィルタ出力を計算する私のコードのスニペットを含めました。理想的には、すべて私が以下のコードで達成しようとしている単一の図にプロットしたいと思います。 forループは3つのButterworthフィルタ出力を計算します。上のコードは、FFTとFFT曲線とsqrt(0.5)行を前に生成されたプロットに追加しようとする直下のコードです。
いずれかの方向またはアドバイスをいただければ幸いです。
"""Performs a Fast Fourier Transform on the data specified at the base of the code"""
def FFT(col):
x = io2.loc[1:,'Time']
y = io2.loc[1:,col]
# Number of samplepoints
#N = 600
N = pd.Series.count(x)
N2 = int(N/2)
# sample spacing
#T = 1.0/800.0
T = 1/(io2.loc[2,'Time'] - io2.loc[1,'Time'])
#x = np.linspace(0.0, N*T, N)
#y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x)
yf = scipy.fftpack.fft(y)
xf = np.linspace(0.0, 1.0/(2.0*T), N2)
fig=plt.figure()
plt.clf()
i=1
for order in [3, 6, 9]:
ax=fig.add_subplot(111, label="order = %d" % order)
b, a = butter_lowpass(cutoff, fs, order=order)
w, h = freqz(b, a, worN=2000)
ax.plot((fs * 0.5/np.pi) * w, abs(h))
i=i+1
ax4=fig.add_subplot(111, label='sqrt(0.5)', frame_on=False)
ax5=fig.add_subplot(111, label="FFT of "+col, frame_on=False)
ax4.plot([0, 0.5 * fs], [np.sqrt(0.5), np.sqrt(0.5)], '--')
ax5.plot(xf, 2.0/N * np.abs(yf[:N2]))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Gain')
plt.grid(True)
plt.legend(loc='best')
#fig, ax = plt.subplots()
#ax.plot(xf, 2.0/N * np.abs(yf[:N2]), label="FFT of "+col)
plt.axis([0,5000,0,0.1])
#plt.xlabel('Frequency (Hz)')
#plt.ylabel('Amplitude (mm)')
#plt.legend(loc=0)
plt.show()
return
種類よろしく、ここで
私はフィルター機能を個々の部分に分割すると、あなたが投稿したコードが機能しますが、私はまだ最初に投稿したループ構造内で試していません。この方法を使用して、各行と凡例にラベルを追加することは可能ですか?再び私はこれをうまく動作させることができなかった。 – chopboy
私は伝説の例を詳述しました。おそらくunzipコマンド(アスタリスク)があなたを混乱させました。 – Chiel
よかった、もう一度ありがとう。 私を混乱させることはあまりありませんが、正直言って私はアスタリスクに気付かなかったのです。私はこの解凍コマンドをGoogleにgoogleする必要があります。 – chopboy