以下代码以top-bottom样式显示imageaudio:

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"样式以在plt图的右侧显示audio

推荐答案

可以使用与matplotlib的GridSpec类似的GridspecLayout.为了直接输出到所需的网格单元中,您可以使用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接口更容易做到这一点,这就是为什么我稍微更改了matplotlib代码的原因)

Python相关问答推荐

从不规则形状区域返回使用openCV跟踪的对象的着陆位置

从收件箱获取特定列中的重复行

如何以实现以下所述的预期行为的方式添加两只Pandas pyramme

为什么使用SciPy中的Distance. cos函数比直接执行其Python代码更快?

保留包含pandas pandras中文本的列

在Transformer中使用LabelEncoding的ML模型管道

NumPy中的右矩阵划分,还有比NP.linalg.inv()更好的方法吗?

有条件地采样我的大型DF的最有效方法

如果索引不存在,pandas系列将通过索引获取值,并填充值

更改matplotlib彩色条的字体并勾选标签?

为什么我的Python代码在if-else声明中的行之前执行if-else声明中的行?

为什么符号没有按顺序添加?

优化pytorch函数以消除for循环

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

NP.round解算数据后NP.unique

无法使用DBFS File API路径附加到CSV In Datricks(OSError Errno 95操作不支持)

driver. find_element无法通过class_name找到元素'""

移动条情节旁边的半小提琴情节在海运

Polars asof在下一个可用日期加入

替换现有列名中的字符,而不创建新列