2015-12-08 235 views
0

我有兩個相同長度的時間序列(地震軌跡的不同分量),我已經計算了單獨的頻譜圖,PxV和PxH對應於垂直和水平分量的地震信號。然後我提取了每個頻譜圖的數據數組(相應於時間點 - 頻率空間的幅度值),並對這些數值應用了一些數學運算,在這種情況下將一個數組除以另一個數組,產生新的數組PxHV。python matplotlib:使用預先計算的光譜數據陣列的光譜圖

如何將我的新數據數組PxHV傳遞給matplotlib,以便與plt.specgram()函數一樣繪製新的數據數組?我相信我可以使用來自PxZ或PxH譜圖的時間和頻率數組(x和y變量),因爲它們對於所有圖都是相同的。

這裏是我的代碼一個簡單的例子:

plt.subplot(411) PxV, freqsV, binsV, imV = plt.specgram(trV.data, NFFT 
= 6000, noverlap = 2000, Fs = trV.stats.sampling_rate, detrend = 'mean', mode = 'psd') 
plt.title('Vertical') 
plt.xlabel('Time [s]') 
plt.ylabel('Frequency [Hz]') 
plt.clim(-50, 50) 
plt.colorbar() 

plt.subplot(412) PxE, freqsE, binsE, imE = plt.specgram(trE.data, NFFT 
= 6000, noverlap = 2000, Fs = trE.stats.sampling_rate, detrend = 'mean', mode = 'psd') 
plt.title('East') 
plt.xlabel('Time [s]') 
plt.ylabel('Frequency [Hz]') 
plt.clim(-50, 50) 
plt.colorbar() 

plt.subplot(413) PxN, freqsN, binsN, imN = plt.specgram(trN.data, NFFT 
= 6000, noverlap = 2000, Fs = trN.stats.sampling_rate, detrend = 'mean', mode = 'psd') 
plt.title('North') 
plt.xlabel('Time [s]') 
plt.ylabel('Frequency [Hz]') 
plt.clim(-50, 50) 
plt.colorbar() 

PxH = np.sqrt(np.multiply(PxE, PxN)) 
PxHV = np.divide(PxH, PxV) 

plt.subplot(414) 

**Need code here to pass PxHV "spectrogram array" to matplotlib** 

plt.title('H/V') 
plt.xlabel('Time [s]') 
plt.ylabel('Frequency [Hz]') 
plt.colorbar() 


plt.show() 

回答

0

我已經想通了 - 使用matplotlib.pyplot.pcolourmesh方法。