python matplotlib:使用预先计算的光谱数据阵列的谱图

时间:2015-12-08 08:44:33

标签: python arrays matplotlib plot

我有两个时间序列'等长度(地震道的不同分量)我已经计算了单独的频谱图,PxV和PxH,它们对应于地震信号的垂直和水平分量。然后,我为每个谱图提取了数据数组(与时间点相对应的振幅值 - 频率空间),并对这些值应用了一些数学运算,在这种情况下,将一个数组除以另一个数组,得到一个新数组PxHV。

如何将新数据数组PxHV传递给matplotlib,以便将新数据数组绘制为与plt.specgram()函数相同的数据?

P.S。,我相信我可以使用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()

1 个答案:

答案 0 :(得分:1)

我已经弄清楚了 - 使用matplotlib.pyplot.pcolourmesh方法。