最近在跑深度学习的模型,对于数据的可视化真的是个大问题,要保证清晰凝练又要各种要素都包含,针对实验数据表现得过于复杂,有一个方式就是源数据作为底,经过滤波之后的数据作为趋势,名曰“平滑曲线图”,附上代码,觉得不好看的各位小伙伴也欢迎一起讨论

实验的原图为:

确实感觉很乱,有趋势,但是就是感觉很难看。然后我用python matplotlib加了一个高斯滤波,当然滤波值根据不同需要自己设置即可(主要是Origin没弄懂怎么玩hhh)。

滤波之后的图如下所示:

 是不是好看了一点,代码如下:

import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage.filters import gaussian_filter1d


def smooth_data(data, sigma=50):
    """使用高斯滤波对数据进行平滑处理。
    参数:
    - data: 原始数据数组
    - sigma: 高斯核的标准差,控制平滑程度
    """
    return gaussian_filter1d(data, sigma=sigma)


file_path1 = 'your input filepath'

# 使用 numpy 加载数据
data1 = np.loadtxt(file_path1, delimiter=',')


# 计算数据点数
episodes = np.arange(1, len(data1) + 1)

# 平滑数据
smoothed_data1 = smooth_data(data1)


# 绘制数据
plt.figure(figsize=(10, 6))  # 设置图的大小
plt.plot(episodes, data1, color='blue', alpha=0.3)
plt.plot(episodes, smoothed_data1, label='baseline', color='blue', linestyle='-', linewidth=2)


# 添加图例
plt.legend(loc='lower right')
plt.grid(True, which='both', linestyle='-', linewidth=0.5, color='gray')  # 设置网格线
plt.xlabel('Epochs')
plt.ylabel('Speed')
plt.xlim(0, len(episodes))  # X轴从0开始
plt.ylim(5.5)  # Y轴从5.5开始,自动调整结束值

# 可选:保存图像到文件
plt.savefig('your output filepath')

# 显示图表
plt.show()

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐