-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplot_stats.py
89 lines (75 loc) · 2.9 KB
/
plot_stats.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import numpy as np
from matplotlib import pyplot as plt
SUMMARY_DIR = './results/qnaf_7'
EXTENTION = '.npy'
results = np.load(SUMMARY_DIR + '/rewards' + EXTENTION)
episodes_xs = np.load(SUMMARY_DIR + '/episodes_xs' + EXTENTION)
episodes_us = np.load(SUMMARY_DIR + '/episodes_us' + EXTENTION)
episodes_rs = np.load(SUMMARY_DIR + '/episodes_rs' + EXTENTION)
episodes_ss = np.load(SUMMARY_DIR + '/episodes_ss' + EXTENTION)
episodes_Vs = np.load(SUMMARY_DIR + '/episodes_Vs' + EXTENTION)
#episodes_Qs = np.load(SUMMARY_DIR + '/episodes_Qs' + EXTENTION)
#episodes_Q_s = np.load(SUMMARY_DIR + '/episodes_Q_s' + EXTENTION)
episodes_cs = np.load(SUMMARY_DIR + '/episodes_cs' + EXTENTION)
def plot_episode(episode_num, actual_num):
ax = plt.subplot(111)
plt.figure(figsize=(20, 14))
t = np.arange(len(episodes_xs[episode_num]))
ax1 = plt.subplot(411)
us = episodes_us[episode_num].reshape(-1)
plt.plot(t, us)
plt.setp(ax1.get_xticklabels(), visible=False)
ax1.set_ylabel('actions')
ax1.set_ylim(min(us) - 0.1, max(us) + 0.1)
plt.title('episode # ' + str(episode_num) )
# share x only
ax2 = plt.subplot(412, sharex=ax1)
rs = episodes_rs[episode_num].reshape(-1)
plt.plot(t, rs)
plt.setp(ax2.get_xticklabels(), visible=False)
ax2.set_ylabel('rewards')
ax2.set_ylim(min(rs) - 0.1, max(rs) + 0.1)
ax3 = plt.subplot(413, sharex=ax1)
ss = episodes_ss[episode_num].reshape(-1)
plt.plot(t, ss)
plt.setp(ax3.get_xticklabels(), visible=False)
ax3.set_ylabel('sigmas')
#ax3.set_ylim(min(Ps) - 0.1, max(Ps) + 0.1)
ax4 = plt.subplot(414, sharex=ax1)
Vs = episodes_Vs[episode_num].reshape(-1)
plt.plot(t, Vs)
plt.setp(ax4.get_xticklabels(), visible=False)
ax4.set_ylabel('V-estimate')
ax4.set_ylim(min(Vs) - 0.1, max(Vs) + 0.1)
plt.xlim(t[0], t[-1])
'''
ax5 = plt.subplot(615, sharex=ax1)
Qs = episodes_Qs[episode_num].reshape(-1)
plt.plot(t, Qs, label = 'Q-estimate\n(target)')
Q_s = episodes_Q_s[episode_num].reshape(-1)
plt.plot(t, Q_s, label='Q-estimate\n(another critic)')
ax5.set_ylim(min(min(Q_s), min(Qs)) - 0.1, max(max(Q_s), max(Qs)) + 0.1)
ax5.set_ylabel('Q-est')
plt.legend()
plt.xlim(t[0], t[-1])
plt.setp(ax5.get_xticklabels(), fontsize=6)
'''
plt.show()
#plt.savefig('qnaf1' + str(actual_num) + '.png')
def plot_results(episode_nums):
t = np.arange(len(results))
plt.plot(t, results)
plt.xlabel('episode')
plt.ylabel('R')
plt.scatter(episode_nums, results[episode_nums])
plt.vlines(50.5, min(results)-200, max(results) + 500, color='g', alpha=0.5)
plt.show()
#plt.savefig('qnaf10.png')
episode_nums = [43, 48, 80, 108, 177, 178, 180]
episode_nums = [30, 73, 86, 89, 92]
episode_nums = [0, 50, 100, 150]
#episode_nums = np.arange(1, 10)
plot_results(episode_nums)
for i, episode_num in enumerate(episode_nums):
plot_episode(episode_num, i + 1)
#pass