我创建了一个如下所示的频率时间谱图。 我想编辑色标,以便从20秒开始显示的更高频率更加突出。我认为在色标(蓝调)的较低端有较小的增量可以实现这一点,但我不知道该怎么做。任何帮助都会很棒!
这是我到目前为止所做的:
import numpy as np
import matplotlib.pyplot as plt
from obspy.core import read
from obspy.signal.tf_misfit import cwt
import pylab
tr = read("whole.sac")[0]
npts = tr.stats.npts
dt = tr.stats.delta
t = np.linspace(0, dt * npts, npts)
f_min = 1
f_max = 10
scalogram = cwt(tr.data, dt, 8, f_min, f_max)
fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.1, 0.7, 0.60])
ax2 = fig.add_axes([0.1, 0.75, 0.75, 0.2])
ax3 = fig.add_axes([0.83, 0.1, 0.03, 0.6])
img = ax1.imshow(np.abs(scalogram)[-1::-1], extent=[t[0], t[-1], f_min, f_max],
aspect='auto', interpolation="nearest")
ax1.set_xlabel("Time after %s [s]" % tr.stats.starttime)
ax1.set_ylabel("Frequency [Hz]")
ax1.set_yscale('linear')
ax2.plot(t, tr.data, 'k')
pylab.xlim([30,72])
fig.colorbar(img, cax=ax3)
plt.show()
答案 0 :(得分:0)
您可以尝试使用其他颜色图或根据this recipe让您拥有自己的颜色。
或者您可能希望过滤数据以将高于给定阈值(例如60)的所有值设置为阈值。这将使用感兴趣范围内的整个色彩映射范围。您可以轻松使用np.clip()
执行此操作。
因此...
np.abs(scalogram)[-1::-1]
变为
np.clip(np.abs(scalogram)[-1::-1], 0, 100)
在0到100之间剪辑。