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

如何在Pyplot中实现类似Tensorboard的平滑均值曲线效果?

如何在Matplotlib中复现TensorBoard的平滑曲线+原始阴影效果?

我太懂你想要的这种可视化效果了——TensorBoard里用阴影展示原始数据的波动方差,同时叠加一条清晰的平滑曲线来抓趋势,确实在高方差数据场景下特别实用。下面我就给你一步步实现这个需求,而且完全避开你提到的「插值」问题。

核心思路

咱们的实现逻辑完全贴合你的要求:

  • 用低透明度的线条/填充区域绘制原始数据,既能保留方差波动细节,又不会喧宾夺主
  • 对原始数据做滑动平均处理(仅基于已有数据点计算均值,不生成任何插值点),用纯色实线叠加在原始数据上方凸显趋势

完整代码实现

1. 导入依赖并生成模拟数据

先搞一组带高噪声的模拟数据,贴近你说的方差大的场景:

import matplotlib.pyplot as plt
import numpy as np

# 生成带高噪声的原始数据
np.random.seed(42)  # 固定随机种子保证可复现
x = np.arange(0, 100)
y_raw = np.sin(x * 0.1) + np.random.normal(0, 0.3, size=len(x))

2. 实现无插值的滑动平均函数

这个函数是关键——它只基于相邻的原始数据点计算均值,不会生成任何插值点:

def moving_average(data, window_size):
    """计算滑动平均,仅使用原始数据点,无插值"""
    weights = np.repeat(1.0, window_size) / window_size
    # 'valid'参数保证只返回有完整窗口覆盖的结果,避免边界填充
    return np.convolve(data, weights, 'valid')

3. 绘制TensorBoard风格的可视化

这里提供两种风格供你选,都是完全符合需求的:

风格一:低透明度原始线条+平滑实线

plt.figure(figsize=(10, 6))

# 绘制原始数据:低透明度线条模拟阴影效果
plt.plot(x, y_raw, color='#1f77b4', alpha=0.3, label='原始数据')

# 计算并绘制平滑曲线
window_size = 5  # 可调整窗口大小控制平滑程度
y_smoothed = moving_average(y_raw, window_size)
x_smoothed = x[window_size-1:]  # 滑动平均后x轴长度对应缩短
plt.plot(x_smoothed, y_smoothed, color='#1f77b4', linewidth=2, label=f'滑动平均(窗口={window_size})')

# 美化图表
plt.title('TensorBoard风格:平滑曲线+原始数据阴影线条')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()
plt.grid(alpha=0.2)

plt.show()

风格二:填充阴影展示原始波动+平滑实线

更贴近TensorBoard的填充式阴影效果:

plt.figure(figsize=(10, 6))

# 用填充区域展示原始数据的波动范围
plt.fill_between(x, y_raw, color='#1f77b4', alpha=0.2, label='原始数据波动')
# 可选:叠加细线条强化原始数据的点分布
plt.plot(x, y_raw, color='#1f77b4', alpha=0.3, linewidth=1)

# 叠加平滑曲线
plt.plot(x_smoothed, y_smoothed, color='#1f77b4', linewidth=2, label=f'滑动平均(窗口={window_size})')

# 美化图表
plt.title('TensorBoard风格:平滑曲线+原始数据填充阴影')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()
plt.grid(alpha=0.2)

plt.show()

关键细节说明

  • 滑动平均的window_size可以按需调整:窗口越大,曲线越平滑;窗口越小,越贴近原始数据
  • 所有平滑后的数据点都是基于原始数据计算的,完全没有插值操作,完美适配你方差大的场景
  • 颜色、透明度、线条粗细这些参数都可以根据你的需求自定义调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:44:07