以下代码以上下
样式显示图像
和音频
:
这是测试代码:
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)
(必须关闭figure
,否则你将得到图形的双重输出。使用OOP比pyplot接口(interface)更容易做到这一点,这就是为什么我改变了你的matplotlib编写一些代码)
关于python - 如何在matplotlib右侧显示音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72952197/