我有两个时间序列'等长度(地震道的不同分量)我已经计算了单独的频谱图,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()
答案 0 :(得分:1)
我已经弄清楚了 - 使用matplotlib.pyplot.pcolourmesh方法。