散景:绘制频谱图

天蝎座

我是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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章