Ein Tabellenformat, das den Wettkampfplan und die Ergebnisse (○, △, ●) visualisiert, wird als Kampfaufzeichnungstabelle bezeichnet. Ich zeige dir die eigentliche Grafik, weil es einfach so ist.
Die Ansicht dieser Tabelle zeigt die Gegner, die auf der X-Achse spielen, und die Gegner, die zu Hause auf der Y-Achse spielen. Erstellen Sie eine solche Tabelle aus den Daten von "Schedule-kun" mit "matplotlib". Dies ist ein Beispiel dafür, wie Sie dies tun können, obwohl es weit von der Standardvisualisierungsmethode entfernt ist.
fixturetable.py
game_result = pd.read_csv("../csv/game_result_all_2020_v2.csv", encoding="utf-8")
#J1 Team Name List (von Norden) Ausgabe 2020
team = ["Sapporo","Sendai","Kashima","Urawa","Eiche","FC Tokio","Kawasaki F.","Yokohama FM","Yokohama FC","Shonan",
"Shimizu","Nagoya","G Osaka","C Osaka","Kobe","Hiroshima","Torisu","Oita"]
#Extrahieren Sie nur J1 und erstellen Sie einen neuen Datenrahmen
game_J1_tmp = game_result[game_result["Turnier"] == "J1"]
Da es noch nicht gestartet wurde, gibt es keine Daten in "Punktzahl / Anzahl der Besucher / home_g / away_g / Ergebnisse". Es hat nichts mit dieser Tabelle zu tun, daher können Sie sie ignorieren.
fixturetable.py
#Erstellen Sie einen leeren Datenrahmen zum Verbinden
game_J1 = pd.DataFrame(index=team, columns=team)
for i, t in enumerate(team):
# [1]Extrahieren Sie jeden Gegner, jede Sektion und jedes Ergebnis für jedes Team
team_tmp = game_J1_tmp.loc[game_J1_tmp["Zuhause"] == t, ["Weg", "sec", "Ergebnis"]]
# [2]Setzen Sie den Index der erfassten Daten zurück
team_tmp.reset_index(inplace=True, drop=True)
# [3]Sec für das Team der Extraktionsbedingungen:Bei 99 hinzufügen
team_tmp.loc[17,:] = [t, 99, -1]
# [4]Fügen Sie Teambestelldaten aus dem Norden hinzu
team_tmp["order"] = team_tmp["Weg"].apply(lambda x: team.index(x) if x in team else -1)
# [5]Sortieren Sie von Norden nach Team
team_tmp = team_tmp.sort_values("order")
# [6]Erweitern Sie die Zeile des endgültigen Datenrahmens (Team der Extraktionsbedingungen).
for x in range(len(team_tmp)):
game_J1.iloc[i, x] = team_tmp.at[team_tmp.index[x],"sec"]
Extrahieren Sie jeden Gegner, jede Sektion und jedes Ergebnis für jedes Team
2 Setzen Sie den Index der erfassten Daten zurück
3 Fügen Sie das Team der Extraktionsbedingungen mit Sek.: 99 hinzu
4 Fügen Sie Teambestelldaten aus dem Norden hinzu
5 Sortieren Sie von Norden nach Team 6 Erweitern Sie die Zeile (Team der Extraktionsbedingungen) des endgültigen Datenrahmens.
Dies ist die endgültige Form der Daten. Zeichnen Sie dies in die Grafik.
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)
#Anzeige des Eventbereichs und Färbung von Quadraten ohne Konkurrenz
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("2020 Meiji Yasuda Seimei J1 Liga Ergebnistabelle", fontsize=16)
txt = "Quelle: JLeague Data Site"
fig.text(.9, .1, txt, fontsize=10, horizontalalignment="right")
txt3 = str(update) + "aktualisieren"
fig.text(.9, .95, txt3, fontsize=10, horizontalalignment="right")
#fig.tight_layout()
plt.savefig("../img/J1fixturetable_noemblem_2020.png ", bbox_inches="tight")
Das Erstellen eines Diagramms ist einfach
Recommended Posts