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

Python绘制多电极数据集196路信号的高效可视化方案咨询

196路电极信号的合并可视化方案

针对你要做的多电极信号合并可视化,替代subplots的低效方案,推荐以下几种实用方法:

方法一:Matplotlib 静态堆叠偏移图(最快最灵活)

直接将所有通道信号按固定偏移量堆叠在同一画布上,既避免子图过小,又大幅提升绘制速度。还能通过颜色渐变区分通道,效果接近你想要的炫酷风格。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

# 替换成你的真实数据加载逻辑,shape应为(通道数, 采样点数)
n_channels = 196
n_samples = 1000
data = np.random.randn(n_channels, n_samples) * 0.5 + np.linspace(0, 1, n_channels)[:, np.newaxis]

# 控制通道间的堆叠间距,可根据信号幅值调整
offset = 2.0
# 生成渐变色彩,区分不同通道
colors = cm.viridis(np.linspace(0, 1, n_channels))

plt.figure(figsize=(12, 8))
for idx in range(n_channels):
    # 给每个通道的信号加上偏移量,实现堆叠
    plt.plot(data[idx] + idx * offset, color=colors[idx], linewidth=0.8)

# 自定义y轴刻度为通道编号
plt.yticks(np.arange(0, n_channels*offset, offset), [f'Ch {idx+1}' for idx in range(n_channels)])
plt.xlabel('采样点索引')
plt.title('196通道电极信号堆叠可视化')
plt.tight_layout()
plt.show()
  • 优势:单画布绘制,速度比subplots快数倍;可自由调整间距、颜色、线条粗细;适合导出静态图用于报告。
  • 优化:如果采样点过多,先用scipy.signal.decimate降采样,进一步提升绘制速度。

方法二:Plotly 交互式堆叠图(适合探索数据)

如果需要查看单个通道的细节,或者要做交互式展示,用Plotly生成可缩放、hover查看数值的动态图:

import plotly.graph_objects as go
import numpy as np
from matplotlib import cm

n_channels = 196
n_samples = 1000
data = np.random.randn(n_channels, n_samples) * 0.5 + np.linspace(0, 1, n_channels)[:, np.newaxis]
offset = 2.0
colors = cm.viridis(np.linspace(0, 1, n_channels))

fig = go.Figure()
for idx in range(n_channels):
    # 转换matplotlib颜色为Plotly可用的RGB格式
    rgb_color = f'rgb({int(colors[idx][0]*255)}, {int(colors[idx][1]*255)}, {int(colors[idx][2]*255)})'
    fig.add_trace(go.Scatter(
        x=np.arange(n_samples),
        y=data[idx] + idx * offset,
        mode='lines',
        line=dict(color=rgb_color, width=0.8),
        name=f'Channel {idx+1}'
    ))

fig.update_layout(
    title='196通道电极信号交互式可视化',
    xaxis_title='采样点索引',
    yaxis_title='通道偏移量 + 信号幅值',
    height=800,
    width=1200
)
fig.show()
  • 优势:支持hover查看单个点的数值;可点击图例隐藏/显示指定通道;可缩放局部区域查看细节;适合做数据探索或网页展示。

方法三:MNE-Python(专业神经电生理信号工具)

如果你的数据集是EEG/ECoG这类神经电生理信号,用MNE-Python可以一键生成专业的多通道堆叠图,还自带预处理功能:

import mne
import numpy as np

# 替换为你的真实数据加载逻辑,比如用mne.io.read_raw_edf/read_raw_fif加载
sfreq = 250  # 采样率
n_channels = 196
n_samples = 1000
data = np.random.randn(n_channels, n_samples)
ch_names = [f'Ch{idx+1}' for idx in range(n_channels)]
ch_types = ['eeg'] * n_channels
info = mne.create_info(ch_names=ch_names, sfreq=sfreq, ch_types=ch_types)
raw = mne.io.RawArray(data, info)

# 绘制堆叠通道图,自动处理偏移和缩放
raw.plot(duration=4, scalings='auto', n_channels=n_channels, show_scrollbars=False)
  • 优势:专为神经信号设计,自动校正基线、调整信号缩放;支持实时滚动查看不同时间段的信号;可直接对接预处理流程。

额外优化技巧

  • 基线校正:用data -= np.mean(data, axis=1)[:, np.newaxis]让每个通道的基线对齐,堆叠后更整齐。
  • 高亮异常通道:给特定通道设置不同的颜色(比如红色加粗),突出异常信号。
  • 降采样:对于超大数据量,先降采样减少绘制点数,提升速度。

内容的提问来源于stack exchange,提问作者GGChe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:23:13