Matplotlib如何点绘随时间变化的点数?

2024-06-25 05:48:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试建立一个像沙扎姆一样的音频指纹算法

我有一个可变长度的频点数据数组,如下所示:

[[69, 90, 172],
 [6, 18, 24],
 [6, 18],
 [6, 18, 24, 42],
 []
...

我想把它画成像这样的光谱图。我的数据没有明确的时间序列轴,但每行都是0.1s的时间片。我知道plt.specgram

dotplot


Tags: 数据算法时间plt序列光谱数组音频
1条回答
网友
1楼 · 发布于 2024-06-25 05:48:08

np.repeat可以创建一个伴随的x数组。它需要一个从输入值计算的大小数组

下面是一个假设x相距.1的示例(与文章中的描述类似,但与示例图像不同)

import numpy as np
import matplotlib.pyplot as plt

# ys = [[69, 90, 172], [6, 18, 24], [6, 18], [6, 18, 24, 42]]
ys = [np.random.randint(50, 3500, np.random.randint(2, 6)) for _ in range(30)]
sizes = [len(y) for y in ys]
xs = [np.repeat(np.arange(.1, (len(ys) + .99) / 10, .1), sizes)]
plt.scatter(xs, np.concatenate(ys), marker='x', color='blueviolet')
plt.show()

example plot

相关问题 更多 >