Files
2019-11-03 10:39:13 +08:00

52 lines
1.4 KiB
Python

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import re
import os
sns.set(style='darkgrid')
def get_info(filename):
filename = filename.replace('.npy', '') # remove .npy
algo, env, seed = re.split('_', filename)
seed = int(seed)
return algo, env, seed
def get_file_name(path='./'):
file_names = []
for _, __, file_name in os.walk(path):
file_names += file_name
data_name = [f for f in file_names if '.npy' in f]
return data_name
def exact_data(file_name, steps):
'''
exact data from single .npy file
:param file_name:
:return: a Dataframe include time, seed, algo_name, avg_reward
'''
avg_reward = np.load(file_name).reshape(-1, 1)
algo, env_name, seed = get_info(file_name)
df = pd.DataFrame(avg_reward)
df.columns = ['Average Return']
df['Time Steps (1e6)'] = steps
df['Algorithm'] = algo
df['env'] = env_name
df['seed'] = seed
return df
if __name__ == '__main__':
file_names = get_file_name('./')
_, env_name, __ = get_info(file_names[0])
df = pd.DataFrame([])
steps = np.linspace(0, 1, 201)
for file in file_names:
data = exact_data(file, steps)
df = pd.concat([df, data], axis=0)
sns.lineplot(x='Time Steps (1e6)', y='Average Return', data=df, hue='Algorithm',ci=90)
plt.title(env_name)
plt.savefig(env_name + '.svg')
plt.show()