You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一张3D散点图中绘制两个音频文件的1D卷积输出?

问题解决:两个音频卷积结果同图散点绘制

你的问题出在循环内部重复创建了新的图表对象——每次循环都会生成一个新的fig和ax,之前的图表会被覆盖,最后plt.show()只显示最后一次循环创建的图。

修改方案很简单,把图表初始化的代码移到循环外面,循环里只负责往同一个坐标轴上添加散点数据,同时给不同文件的点用不同颜色区分:

import os
import glob
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from scipy.io import wavfile

path = 'C:/Users/....'
# 先初始化图表和坐标轴,放在循环外面
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 准备不同颜色区分两个文件
colors = ['crimson', 'deepskyblue']
file_idx = 0

for filename in glob.glob(os.path.join(path, '*.wav')):
    sample_rate,audio = wavfile.read(filename)
    x = audio
    z = x.reshape(1, audio.shape[0], 1)
    z = tf.constant(z, dtype=tf.float32)
    
    y = tf.keras.layers.Conv1D(1, 44095, activation='relu', input_shape=(1, audio.shape[0], 1))(z)
    y = y.numpy()
    aa = y.reshape(-1)
    
    # 往同一个坐标轴上添加散点,用不同颜色
    ax.scatter(np.arange(3), aa, color=colors[file_idx], label=os.path.basename(filename))
    file_idx += 1

# 添加图例和标签,让图表更清晰
ax.set_xlabel('数据点索引')
ax.set_ylabel('卷积输出值')
ax.set_zlabel('维度')
ax.legend()
plt.show()

这样修改后,两个音频文件的3个卷积输出点会被绘制在同一张3D散点图上,不同颜色的点对应不同文件,图例也能帮你区分每个点属于哪个音频。

内容的提问来源于stack exchange,提问作者A. Gehani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:10:35