Source code for src.core.analyse.plotting

import sys, os
import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 

from src.core.io.wrapper import executeSelectQuery
from src.utils.sqlquery import returnSelectQuery


[docs] def buildAnalyticsFigure(player: str, feature: str, dim: tuple[int], diagram: str = "line") -> None: """builds a diagram for a given player/feature relation. uses the internal data Parameters ---------- player : str the player, of which the diagram is wanted feature : str a numerical feature dim : tuple[int] the dimensions of the diagram in int x int diagram : str, optional a specifier for a diagram. supported: line, histo """ query_player = returnSelectQuery("playerdata",[feature],f"playerid='{player}'") if player == "": query_player = returnSelectQuery("playerdata",[feature]) query_date = returnSelectQuery("metadata",["date","gameid"]) data_player = executeSelectQuery(query_player) data_date = executeSelectQuery(query_date) dpi = 100 figsize = (float(dim[0])/float(dpi), float(dim[1])/float(dpi)) data = data_player.join(data_date) plt.figure(dpi, figsize) if diagram == "line": data = data.groupby("date", as_index=False).mean(numeric_only=True) plt.plot(data["date"], data[feature], linestyle="-", marker='o') plt.xlabel("date") elif diagram == "histo": data = data.sort_values(["gameid"]) plt.hist(data[feature], color="grey", edgecolor="black") plt.xlabel(feature) plt.ylabel("amount of player") plt.grid() os.makedirs(os.path.dirname(f"gamefiles/{feature}_{player}_{diagram}.png"), exist_ok=True) plt.savefig(f"gamefiles/{feature}_{player}_{diagram}.png") plt.close()