import numpy as np from tools.metadata import get_hero_dict import operator import pandas as pd import plotly.graph_objs as go import plotly.plotly as py def winrate_statistics(dataset_df, mmr_info): x_data, y_data = dataset_df wins = np.zeros(114) games = np.zeros(114) winrate = np.zeros(114) for idx, game in enumerate(x_data): for i in range(228): if game[i] == 1: games[i % 114] += 1 if y_data[idx] == 1: if i < 114: wins[i] += 1 else: if i >= 114: wins[i - 114] += 1 winrate = wins / games winrate_dict = dict() hero_dict = get_hero_dict() for i in range(114): if i != 23: winrate_dict[hero_dict[i + 1]] = winrate[i] sorted_winrates = sorted(winrate_dict.items(), key=operator.itemgetter(1)) x_plot_data = [x[0] for x in sorted_winrates] y_plot_data = [x[1] for x in sorted_winrates] title = 'Hero winrates at ' + mmr_info + ' MMR' data = [go.Bar( y=x_plot_data, x=y_plot_data, orientation='h' )] layout = go.Layout( title=title, width=1000, height=1400, yaxis=dict(title='hero', ticks='', nticks=114, tickfont=dict( size=8, color='black') ), xaxis=dict(title='win rate', nticks=30, tickfont=dict( size=10, color='black') ) ) fig = go.Figure(data=data, layout=layout) py.iplot(fig, filename='hero_winrates_' + mmr_info) def pick_statistics(dataset_df, mmr_info): x_data, y_data = dataset_df wins = np.zeros(114) games = np.zeros(114) pick_rate = np.zeros(114) for idx, game in enumerate(x_data): for i in range(228): if game[i] == 1: games[i % 114] += 1 if y_data[idx] == 1: if i < 114: wins[i] += 1 else: if i >= 114: wins[i - 114] += 1 pick_rate = games / np.sum(games) pick_rate_dict = dict() hero_dict = get_hero_dict() for i in range(114): if i != 23: pick_rate_dict[hero_dict[i + 1]] = pick_rate[i] sorted_pickrates = sorted(pick_rate_dict.items(), key=operator.itemgetter(1)) x_plot_data = [x[0] for x in sorted_pickrates] y_plot_data = [x[1] for x in sorted_pickrates] title = 'Hero pick rates at ' + mmr_info + ' MMR' data = [go.Bar( y=x_plot_data, x=y_plot_data * 100, orientation='h' )] layout = go.Layout( title=title, width=1000, height=1400, yaxis=dict(title='hero', ticks='', nticks=114, tickfont=dict( size=8, color='black') ), xaxis=dict(title='pick rate', nticks=30, tickfont=dict( size=10, color='black') ) ) fig = go.Figure(data=data, layout=layout) py.iplot(fig, filename='hero_pickrates_' + mmr_info) def mmr_distribution(csv_file): dataset = pd.read_csv(csv_file) data = [go.Histogram(x=dataset[:30000]['avg_mmr'])] layout = go.Layout( title='MMR distribution (sample of 30k games)' ) fig = go.Figure(data=data, layout=layout) py.iplot(fig, filename='MMR_distribution')