54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
import json
|
|
from matplotlib import pyplot as plt
|
|
from island.match import Match
|
|
from island.matches import Matches
|
|
|
|
matches = Matches('wos-data-new')
|
|
|
|
labels = ['has neighbor', 'no neighbor']
|
|
percents = [0.0, 0.0]
|
|
op = 'C'
|
|
|
|
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'] == op or x['act_b'] == op).raw_data:
|
|
if row['rno'] == game_end_at:
|
|
print(row)
|
|
continue
|
|
if row['act_a'] == op:
|
|
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:
|
|
pass
|
|
else:
|
|
o = m.query('action', 'done').where(lambda y: (y['b'] == b or y['a'] == b) and y['rno'] == row['rno'] + 1).raw_data
|
|
if o:
|
|
percents[0] += 1
|
|
else:
|
|
percents[1] += 1
|
|
if row['act_b'] == op:
|
|
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:
|
|
pass
|
|
else:
|
|
o = m.query('action', 'done').where(lambda y: (y['b'] == a or y['a'] == a) and y['rno'] == row['rno'] + 1).raw_data
|
|
if o:
|
|
percents[0] += 1
|
|
else:
|
|
percents[1] += 1
|
|
|
|
_all = sum(percents) / 100
|
|
percents[0] /= _all
|
|
percents[1] /= _all
|
|
|
|
plt.figure()
|
|
plt.pie(percents, labels=labels, autopct='%1.1f%%', startangle=90)
|
|
plt.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.
|
|
plt.show()
|
|
# plt.savefig('graph/unlink_has_neighbor.png') |