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