Un format tabulaire qui visualise le calendrier et les résultats de la compétition (○, △, ●) est appelé un tableau d'enregistrement de bataille. Je vais vous montrer le graphique réel parce que c'est comme ça.
La vue de ce tableau montre les adversaires qui joueront à l'extérieur sur l'axe X et les adversaires qui joueront à domicile sur l'axe Y.
Créez une telle table à partir des données de "Schedule-kun" en utilisant matplotlib
. Ceci est un exemple de la façon dont vous pouvez le faire, bien que ce soit loin de la méthode de visualisation standard.
fixturetable.py
game_result = pd.read_csv("../csv/game_result_all_2020_v2.csv", encoding="utf-8")
#Liste des noms de l'équipe J1 (du nord) édition 2020
team = ["Sapporo","Sendai","Kashima","Urawa","chêne","FC Tokyo","Kawasaki F","Yokohama FM","Yokohama FC","Shonan",
"Shimizu","Nagoya","G Osaka","C Osaka","Kobe","Hiroshima","Torisu","Oita"]
#Extraire uniquement J1 et créer un nouveau bloc de données
game_J1_tmp = game_result[game_result["Tournoi"] == "J1"]
Comme il n'a pas encore commencé, il n'y a pas de données dans "Score / Nombre de visiteurs / home_g / away_g / Résultats". Cela n'a rien à voir avec ce tableau, vous pouvez donc l'ignorer.
fixturetable.py
#Créer un bloc de données vide à rejoindre
game_J1 = pd.DataFrame(index=team, columns=team)
for i, t in enumerate(team):
# [1]Extraire chaque adversaire, section et résultat pour chaque équipe
team_tmp = game_J1_tmp.loc[game_J1_tmp["domicile"] == t, ["Une façon", "sec", "résultat"]]
# [2]Réinitialiser l'index des données acquises
team_tmp.reset_index(inplace=True, drop=True)
# [3]Sec pour l'équipe des conditions d'extraction:Ajouter à 99
team_tmp.loc[17,:] = [t, 99, -1]
# [4]Ajouter des données de commande d'équipe du nord
team_tmp["order"] = team_tmp["Une façon"].apply(lambda x: team.index(x) if x in team else -1)
# [5]Trier du nord à l'équipe
team_tmp = team_tmp.sort_values("order")
# [6]Développez jusqu'à la ligne du bloc de données final (équipe de conditions d'extraction).
for x in range(len(team_tmp)):
game_J1.iloc[i, x] = team_tmp.at[team_tmp.index[x],"sec"]
Extraire chaque adversaire, section et résultat pour chaque équipe
2 Réinitialisez l'index des données acquises
3 Ajoutez l'équipe de conditions d'extraction avec sec: 99
4 Ajouter des données de commande d'équipe du nord
5 Trier du nord à l'équipe 6 Développez jusqu'à la ligne (équipe de conditions d'extraction) de la trame de données finale.
Il s'agit de la forme finale des données. Dessinez ceci sur le graphique.
fixturetable.py
plt.rcParams["font.family"] = "IPAexGothic"
fig = plt.figure(figsize=(6,6),dpi=144)
ax1 = fig.add_subplot(111)
teams = np.arange(len(team)+1)
h, v = 0.5, 0.5
ax1.set_ylim(18, 0)
ax1.set_xticks(teams)
ax1.set_yticks(teams)
ax1.xaxis.tick_top()
ax1.set_xticklabels(team, rotation=90)
ax1.set_yticklabels(team)
ax1.grid(True)
ax1.tick_params(axis="both", which="both", length=0)
#Affichage de la section événement et coloration des carrés sans concours
for k, t in enumerate(team):
for i in range(18):
if game_J1.at[game_J1.index[i], t] == 99:
_ = patches.Rectangle(xy=(k, i), width=1.0, height=1.0, color="0.8")
ax1.add_patch(_)
else:
ax1.text(k+h, i+v, game_J1.at[game_J1.index[i], t], size=12, color = "k", ha="center", va="center")
ax1.set_title("Tableau des Résultats de la Ligue Meiji Yasuda Seimei J1 2020", fontsize=16)
txt = "Source: site de données JLeague"
fig.text(.9, .1, txt, fontsize=10, horizontalalignment="right")
txt3 = str(update) + "mise à jour"
fig.text(.9, .95, txt3, fontsize=10, horizontalalignment="right")
#fig.tight_layout()
plt.savefig("../img/J1fixturetable_noemblem_2020.png ", bbox_inches="tight")
Le point de créer un graphique est simple
Recommended Posts