我是Bookeh的新手,我有一项任务是在bokeh中绘制频谱图。
我正在使用https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.spectrogram.html来获取频谱图。在上面的示例中,他们使用matplotlib的pcolormesh()绘制频谱图。如何在bokeh中获得相同(或等效)的频谱图。
我试图通过使用以下代码绘制热图来完成此任务:
f, t, Sxx = spectrogram(raw_data, fs)
i=0
for freq in range(f.shape[0]):
for time in range(t.shape[0]):
df_spectogram.loc[i] = [f[freq],t[time],Sxx[freq][time]]
i = i+1
TOOLS = "hover,save,pan,box_zoom,reset,wheel_zoom"
PALETTE = ['#081d58', '#253494', '#225ea8', '#1d91c0', '#41b6c4', '#7fcdbb', '#c7e9b4', '#edf8b1', '#ffffd9']
mapper = LinearColorMapper(palette=PALETTE, low=numpy.min(Sxx), high=numpy.max(Sxx))
spectogram_figure = figure(title="Spectogram",x_axis_location="below", plot_width=900, plot_height=400,
tools=TOOLS)
spectogram_figure.background_fill_color = "#eaeaea"
spectrogram_source = ColumnDataSource(data=dict(Sxx=df_spectogram['Sxx'],Frequency=df_spectogram['Frequency'],Time=df_spectogram['Time']))
spectogram_figure.circle(x="Time", y="Frequency", source=spectrogram_source, fill_color={'field': 'Sxx', 'transform': mapper}, line_color=None)
我通过更改使其以所需的方式工作
spectogram_figure.circle(x="Time", y="Frequency", source=spectrogram_source, fill_color={'field': 'Sxx', 'transform': mapper}, line_color=None)
绘制宽度等于分段时间和频率高度的矩形。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句