swdata/after_d_link_tr.py
2018-03-11 17:16:26 +08:00

61 lines
1.8 KiB
Python

import json
from matplotlib import pyplot as plt
from matplotlib.ticker import PercentFormatter
from island.match import Match
from island.matches import Matches
matches = Matches('wos-data-new')
lx=[]
ly=[]
h = []
for m in matches.data:
info = m.query('game', 'created').select('info').first()['info']
conf = json.loads(info['config'])
game_end_at = int(info['game_end_at'])
for row in m.query('action', 'done').where(lambda x: x['act_a'] == 'D' or x['act_b'] == 'D').raw_data:
if row['rno'] == game_end_at:
print(row)
continue
if row['act_a'] == 'D':
a = row['a']
b = row['b']
n = m.query('action', 'done').where(lambda y: ((y['a'] == a and y['b'] == b) or (y['a'] == b and y['b'] == a)) and y['rno'] == row['rno'] + 1).raw_data
if n:
h.append(n[0]['tr'])
if n[0]['tr'] in lx:
ly[lx.index(n[0]['tr'])] += 1
else:
lx.append(n[0]['tr'])
ly.append(1)
if row['act_b'] == 'D':
a = row['a']
b = row['b']
n = m.query('action', 'done').where(lambda y: ((y['a'] == a and y['b'] == b) or (y['a'] == b and y['b'] == a)) and y['rno'] == row['rno'] + 1).raw_data
if n:
h.append(n[0]['tr'])
if n[0]['tr'] in lx:
ly[lx.index(n[0]['tr'])] += 1
else:
lx.append(n[0]['tr'])
ly.append(1)
al = sum(ly)
ly = map(lambda y: float(y) / float(al), ly)
_bin = [x * 120 for x in range(13)]
fig = plt.figure()
n,b,p = plt.hist(h, _bin, normed=True, ec='k')
ax = fig.gca()
ax.yaxis.set_major_formatter(PercentFormatter(xmax=sum(n)))
print(n)
print(b)
print(p)
print(sum(n))
# plt.show()
plt.savefig('graph/after_d_link_tr.png')