波形グラフとスペクトログラムの図を上下に並べた図を作成したいと思っています。

例えは、0時、1時、2時の1時間ごとのデータファイルがあり、これをx軸が0:00-3:00となるようなグラフとして出力する場合、3つのファイルをひとつにマージして、作成するという方法もあろうかと思いますが、これをやると、specgramの計算でメモリエラーとなってしまいました。(サンプルコードではエラーになりませんが、実際使用しているデータはデータ数が膨大なため、エラーが発生してしまいます)
そこで、0時のファイルを読んで計算、1時のファイルを読んで計算、、、という風にすればよいのではと考えてやってみましたが、うまくいきません。(スペクトログラムの図が、最後に読み込んだファイルの図になってしまいます)
なにか良い方法はないでしょうか。初心者です。よろしくお願いします。

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy as np
import pandas as pd

start_h = 0
end_h = 3

fig = plt.figure(figsize=(6,4))


start_hh = '%02d' % start_h #zero padding
end_hh = '%02d' % end_h

i = start_h

while i < end_h:

    hour = '%02d' % i 
    hour_plus1 = '%02d' % (i+1)

    #xデータ生成: 02018-01-01 **:00:00から1秒毎にデータを生成(3600-1個生成)
    x= pd.date_range('2018-01-01 ' + hour + ':00:00',periods=3600-1,freq='S')

    #yデータ生成: 0から(i+1)*10の間で乱数を発生させて3600-1要素(1Hz 1時間)のリストを生成
    y = np.random.randint(0,(i+1)*10,3600-1)

    #plot waveform
    plt.axes([0.1, 0.75, 0.7, 0.2])
    plt.plot(x,y)
    plt.xlim('2018-01-01 ' + start_hh + ':00:00', '2018-01-01 ' + end_hh + ':00:00')
    plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))

    #plot spectrogram
    plt.axes([0.1, 0.1, 0.7, 0.55])
    Pxx, freqs, bins, im = plt.specgram(y, Fs=1,scale='dB')

    i= i+1

#plot colorbar
cbar_ax = fig.add_axes([0.83, 0.1, 0.03, 0.55])
fig.colorbar(im, cax=cbar_ax).set_label('Intensity [dB]')

plt.show()