如何使用带有matplotlib的librosa很好地显示waveplot

时间:2017-03-01 15:43:54

标签: matplotlib librosa

参考此链接:https://aqibsaeed.github.io/2016-09-03-urban-sound-classification-part-1/,我正在尝试制作相同的波形图,但是,我得到了这样的数字:Waveplot

我正在运行这些python代码:

def plot_waves(sound_names, raw_sounds):
    i = 1
    fig = plt.figure()
    for n, f in zip(sound_names, raw_sounds):
        plt.subplot(10, 1, i)
        librosa.display.waveplot(np.array(f), sr=22050)
        plt.title(n.title())
        i += 1
    plt.suptitle("Figure 1: Waveplot", x=0.5, y=0.915, fontsize=18)
    plt.show()

任何想法如何改进以实现链接中显示的相同数字?感谢。

1 个答案:

答案 0 :(得分:1)

在您发布的链接中,plot_waves功能将复制到下方。

请注意传递给figsize的{​​{1}}和dpi参数。 plt.figure指定图形的(宽度,高度)。 figsize=(25,60)当然指定了解决方案。使用这些参数将增加您的数字大小并解决"压扁"看起来似乎是个问题。

由于您的图标题与您的第一个轴标题重叠,因此您还需要在dpi中指定标​​题位置的参数。并非plt.suptitle中的xy值分别是左侧和底部的图像大小的分数。因此,plt.suptitle水平指定图形中间的标题位置,x=0.5指定图形底部总图形高度的91.5%的垂直位置。

在获得适合您的情节之前,请随时使用这些设置。

y=0.915