ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

论文中画带标准差阴影的曲线图:seaborn.lineplot()

2021-10-01 14:04:34  阅读:751  来源: 互联网

标签:seaborn read smooth v3 BipedalWalker lineplot path csv 中画


绘图

以PPO算法在gym"BipedalWalker-v3"环境的reward曲线为例,绘制阴影图。

# 导入库函数
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use('ggplot')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 平滑处理,类似tensorboard的smoothing函数。
def smooth(read_path, save_path, file_name, x='timestep', y='reward', weight=0.75):

    data = pd.read_csv(read_path + file_name)
    scalar = data[y].values
    last = scalar[0]
    smoothed = []
    for point in scalar:
        smoothed_val = last * weight + (1 - weight) * point
        smoothed.append(smoothed_val)
        last = smoothed_val

    save = pd.DataFrame({x: data[x].values, y: smoothed})
    save.to_csv(save_path + 'smooth_'+ file_name)
# 平滑预处理原始reward数据
smooth(read_path='./BipedalWalker-v3/', save_path='./BipedalWalker-v3/', file_name='PPO_BipedalWalker-v3_log_210.csv')
smooth(read_path='./BipedalWalker-v3/', save_path='./BipedalWalker-v3/', file_name='PPO_BipedalWalker-v3_log_310.csv')
smooth(read_path='./BipedalWalker-v3/', save_path='./BipedalWalker-v3/', file_name='PPO_BipedalWalker-v3_log_410.csv')
# 读取平滑后的数据
df1 = pd.read_csv('./BipedalWalker-v3/smooth_PPO_BipedalWalker-v3_log_210.csv')  #[1100: 1200]
df2 = pd.read_csv('./BipedalWalker-v3/smooth_PPO_BipedalWalker-v3_log_310.csv')  #[1100: 1200]
df3 = pd.read_csv('./BipedalWalker-v3/smooth_PPO_BipedalWalker-v3_log_410.csv')  #[1100: 1200]
# 拼接到一起
df = df1.append(df2.append(df3))
# 重新排列索引
df.index = range(len(df))
print(df)
# 设置图片大小
plt.figure(figsize=(15, 10))
# 画图
sns.lineplot(data=df, x="timestep", y="reward")

结果

未平滑曲线:
在这里插入图片描述
平滑后的曲线:

给上个数据点的权重越大,曲线越平滑。反之,则越关注当前数据点,曲线越曲折。

在这里插入图片描述
局部放大图:

可看到描述正负标准差的阴影上下尺寸对称。

在这里插入图片描述

标签:seaborn,read,smooth,v3,BipedalWalker,lineplot,path,csv,中画
来源: https://blog.csdn.net/qq_40317204/article/details/120577308

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有