python - 如何在matplotlib右侧显示音频

标签 python matplotlib ipython librosa

以下代码以上下样式显示图像音频:

enter image description here

这是测试代码:

import librosa
import matplotlib.pyplot as plt
import IPython.display as ipd

def plot_it(name, audio, sample_rate):
    plt.figure(figsize=(8, 1))
    plt.plot(audio)
    plt.gca().set_title(name)

    plt.show()

    ipd.display(ipd.Audio(data=audio, rate=sample_rate))

是否可以将“top-bottom”样式更改为“left-right”样式,以便在右侧显示audio plt 图形的一侧?

最佳答案

您可以使用 GridspecLayout这与 matplotlib 的 GridSpec 类似。为了将输出定向到所需的网格单元,您可以使用 Output 捕获它。小部件:

import librosa
import matplotlib.pyplot as plt
import IPython.display as ipd
from ipywidgets import Output, GridspecLayout

def plot_it(name, audio, sample_rate):
    grid = GridspecLayout(1, 2, align_items='center')
    out = Output()
    with out:
        fig, ax = plt.subplots(figsize=(8, 1))
        ax.plot(audio)
        ax.set_title(name)
        plt.close(fig)
        ipd.display(ax.figure)
    grid[0, 0] = out
    out = Output()
    with out:
        ipd.display(ipd.Audio(data=audio, rate=sample_rate))
    grid[0, 1] = out
    ipd.display(grid)

name = 'nutcracker'
filename = librosa.example(name)
y, sr = librosa.load(filename)

plot_it(name, y, sr)

enter image description here

(必须关闭figure,否则你将得到图形的双重输出。使用OOP比pyplot接口(interface)更容易做到这一点,这就是为什么我改变了你的matplotlib编写一些代码)

关于python - 如何在matplotlib右侧显示音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72952197/

相关文章:

python - 在 Python 中从 Chrome 获取所有打开的网站

python - 在 Python 中获取基类类型

python - 如何让聊天机器人开始监听调用它的名字?

python - 如何解释 scipy.stats.probplot 结果?

ipython - 选项 "--read-only"Ipython 笔记本

ipython: OperationalError: 磁盘 I/O 错误

python - MacOS 上 Python 3.7 中的 basemap 构建错误——来自 Cython?

python - Pandas 条形图中的自定义图例 (matplotlib)

python - Matplotlib 错误栏不以标记为中心

python - 在 Jupyter Notebook 中重新运行导入