【问题标题】:Add marker to Librosa Waveplot Python将标记添加到 Librosa Waveplot Python
【发布时间】:2020-11-03 03:46:07
【问题描述】:

我一直在关注 Librosa 文档中的教程和示例。我设法创建了一个波图,但我无法弄清楚波图和 matplotlib 之间的相关性。但是我尝试添加一个标记,它不起作用。我只是得到各种不同的错误。如果有人知道如何做到这一点,我将不胜感激?

顺便说一句:任何mp3都可以用来测试这段代码

import librosa.display
import matplotlib.pyplot as plt

filename = 'shut_up_and_dance.mp3'


def main():
    # Load the mp3 file and define variables
    y, sr = librosa.load(filename, duration=10)
    fig, ax = plt.subplots(nrows=1, sharex=True, sharey=True)
    

    y_harm, y_perc = librosa.effects.hpss(y)
    librosa.display.waveplot(y_harm, sr=sr, alpha=0.25, ax=ax)
    librosa.display.waveplot(y_perc, sr=sr, color='r', alpha=0.5, ax=ax)
    ax.set(title='Harmonic + Percussive')
    plt.show()


if __name__ == '__main__':
    main()

print('end program')

【问题讨论】:

标签: python matplotlib marker librosa


【解决方案1】:

据我所知,Libra.display.waveplot() 没有设置标记的能力。我对声音波形一无所知。我不知道我想要什么输出,但 matplotlib 似乎能够处理它。

import librosa.display
import matplotlib.pyplot as plt
import numpy as np

filename = '/content/test_music.mp3'

def main():
    # Load the mp3 file and define variables
    y, sr = librosa.load(filename, duration=10)
    fig, ax = plt.subplots(nrows=1, sharex=True, sharey=True, figsize=(16,9))

    y_harm, y_perc = librosa.effects.hpss(y)
    librosa.display.waveplot(y_harm, sr=sr, alpha=0.25, ax=ax)
    librosa.display.waveplot(y_perc, sr=sr, color='r', alpha=0.5, ax=ax)
    ax.set(title='Harmonic + Percussive')
    ax.plot(np.arange(1,220501), y_harm, marker='o', markersize=10)
    plt.show()


if __name__ == '__main__':
    main()

【讨论】:

  • 这成功了!我能麻烦您解释一下那条线是如何工作的吗?我了解标记和标记大小属性。但我不明白标记是如何放置的,或者为什么它们用一条线连接。
  • 我的代码获取了 x 轴的长度,即 220500,所以我设置它并创建了一个折线图,其中您检索到的 y_harm 作为 y 轴,带有圆形标记。这只是一个样本,所以这取决于你想在上面放什么样的标记。 Examples of Markers
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
相关资源
最近更新 更多