sportowe_wizualizacja/PassMap.ipynb

508 lines
72 KiB
Plaintext
Raw Normal View History

2019-06-03 13:31:10 +02:00
{
"cells": [
{
"cell_type": "code",
2022-11-14 11:30:57 +01:00
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_16422/3839686170.py:21: FutureWarning: pandas.io.json.json_normalize is deprecated, use pandas.json_normalize instead\n",
" df = json_normalize(data, sep = \"_\")\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"done\n"
]
}
],
"source": [
"import json\n",
"import os\n",
"from pandas.io.json import json_normalize\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.patches import Arc, Rectangle, ConnectionPatch\n",
"from matplotlib.offsetbox import OffsetImage\n",
"#import squarify\n",
"from functools import reduce\n",
"path = \"\"\"my_events/\"\"\"\n",
"Xg_req = pd.DataFrame(data=None)\n",
"for filename in (os.listdir(path)):\n",
" #print(filename)\n",
" \n",
" with open(\"%s\" % path + filename,encoding=\"utf8\") as data_file: \n",
" data = json.load(data_file)\n",
" df = pd.DataFrame(data=None)\n",
" \n",
" df = json_normalize(data, sep = \"_\")\n",
" \n",
" #df = df[(df['type_name'] == \"Shot\")]\n",
" #df = df.loc[:,['location','shot_body_part_id','shot_end_location','shot_one_on_one','shot_technique_id','shot_type_id','under_pressure','shot_outcome_id']]\n",
" #print(df.shape)\n",
" Xg_req = Xg_req.append(df,ignore_index=True,sort=False)\n",
" #df.drop(df.index, inplace=True)\n",
" \n",
"print(\"done\")\n",
"df = Xg_req"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/home/mikolaj/2ait_tech/sportowe/Football-Analytics\n"
]
}
],
"source": [
"!pwd"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>index</th>\n",
" <th>period</th>\n",
" <th>timestamp</th>\n",
" <th>minute</th>\n",
" <th>second</th>\n",
" <th>possession</th>\n",
" <th>duration</th>\n",
" <th>type_id</th>\n",
" <th>type_name</th>\n",
" <th>...</th>\n",
" <th>substitution_replacement_name</th>\n",
" <th>50_50_outcome_id</th>\n",
" <th>50_50_outcome_name</th>\n",
" <th>foul_committed_offensive</th>\n",
" <th>foul_committed_card_id</th>\n",
" <th>foul_committed_card_name</th>\n",
" <th>pass_inswinging</th>\n",
" <th>shot_redirect</th>\n",
" <th>block_save_block</th>\n",
" <th>pass_goal_assist</th>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
2022-11-14 11:30:57 +01:00
" </thead>\n",
" <tbody>\n",
2019-06-03 13:31:10 +02:00
" <tr>\n",
2022-11-14 11:30:57 +01:00
" <th>907</th>\n",
" <td>27622bee-3beb-45b5-a8e9-4353a3c48cf4</td>\n",
" <td>908</td>\n",
" <td>1</td>\n",
" <td>00:29:57.022</td>\n",
" <td>29</td>\n",
" <td>57</td>\n",
" <td>63</td>\n",
" <td>0.602922</td>\n",
" <td>16</td>\n",
" <td>Shot</td>\n",
2019-06-03 13:31:10 +02:00
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
2022-11-14 11:30:57 +01:00
" <th>2589</th>\n",
" <td>7ec34223-fb09-47a9-998f-568ba958ef0d</td>\n",
" <td>2590</td>\n",
" <td>2</td>\n",
" <td>00:44:46.358</td>\n",
" <td>89</td>\n",
" <td>46</td>\n",
" <td>194</td>\n",
" <td>1.080860</td>\n",
" <td>16</td>\n",
" <td>Shot</td>\n",
2019-06-03 13:31:10 +02:00
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
2022-11-14 11:30:57 +01:00
" <th>2764</th>\n",
" <td>f66400ca-02a4-4121-92d4-991cb225d885</td>\n",
" <td>2765</td>\n",
" <td>2</td>\n",
" <td>00:49:59.483</td>\n",
" <td>94</td>\n",
" <td>59</td>\n",
" <td>209</td>\n",
" <td>0.663063</td>\n",
" <td>16</td>\n",
" <td>Shot</td>\n",
2019-06-03 13:31:10 +02:00
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
2022-11-14 11:30:57 +01:00
"<p>3 rows × 117 columns</p>\n",
2019-06-03 13:31:10 +02:00
"</div>"
],
"text/plain": [
2022-11-14 11:30:57 +01:00
" id index period timestamp \\\n",
"907 27622bee-3beb-45b5-a8e9-4353a3c48cf4 908 1 00:29:57.022 \n",
"2589 7ec34223-fb09-47a9-998f-568ba958ef0d 2590 2 00:44:46.358 \n",
"2764 f66400ca-02a4-4121-92d4-991cb225d885 2765 2 00:49:59.483 \n",
2019-06-03 13:31:10 +02:00
"\n",
2022-11-14 11:30:57 +01:00
" minute second possession duration type_id type_name ... \\\n",
"907 29 57 63 0.602922 16 Shot ... \n",
"2589 89 46 194 1.080860 16 Shot ... \n",
"2764 94 59 209 0.663063 16 Shot ... \n",
2019-06-03 13:31:10 +02:00
"\n",
2022-11-14 11:30:57 +01:00
" substitution_replacement_name 50_50_outcome_id 50_50_outcome_name \\\n",
"907 NaN NaN NaN \n",
"2589 NaN NaN NaN \n",
"2764 NaN NaN NaN \n",
2019-06-03 13:31:10 +02:00
"\n",
2022-11-14 11:30:57 +01:00
" foul_committed_offensive foul_committed_card_id \\\n",
"907 NaN NaN \n",
"2589 NaN NaN \n",
"2764 NaN NaN \n",
2019-06-03 13:31:10 +02:00
"\n",
2022-11-14 11:30:57 +01:00
" foul_committed_card_name pass_inswinging shot_redirect block_save_block \\\n",
"907 NaN NaN NaN NaN \n",
"2589 NaN NaN NaN NaN \n",
"2764 NaN NaN NaN NaN \n",
2019-06-03 13:31:10 +02:00
"\n",
2022-11-14 11:30:57 +01:00
" pass_goal_assist \n",
"907 NaN \n",
"2589 NaN \n",
"2764 NaN \n",
2019-06-03 13:31:10 +02:00
"\n",
2022-11-14 11:30:57 +01:00
"[3 rows x 117 columns]"
2019-06-03 13:31:10 +02:00
]
},
2022-11-14 11:30:57 +01:00
"execution_count": 6,
2019-06-03 13:31:10 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d = df.query('shot_outcome_id == 97')\n",
"d"
]
},
{
"cell_type": "code",
2022-11-14 11:30:57 +01:00
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"player_name= 'Emma Mitchell'"
]
},
{
"cell_type": "code",
"execution_count": 19,
2019-06-03 13:31:10 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>period</th>\n",
" <th>timestamp</th>\n",
" <th>location</th>\n",
" <th>pass_end_location</th>\n",
" <th>pass_recipient_name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
2022-11-14 11:30:57 +01:00
" <th>76</th>\n",
" <td>d91462cf-c8c3-4043-b866-62b1d042d793</td>\n",
2019-06-03 13:31:10 +02:00
" <td>1</td>\n",
2022-11-14 11:30:57 +01:00
" <td>00:01:20.983</td>\n",
" <td>[72.8, 0.1]</td>\n",
" <td>[70.8, 15.7]</td>\n",
" <td>Josie Green</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" <tr>\n",
2022-11-14 11:30:57 +01:00
" <th>241</th>\n",
" <td>78a5be08-f6a9-4e94-974e-36ffaecc0014</td>\n",
2019-06-03 13:31:10 +02:00
" <td>1</td>\n",
2022-11-14 11:30:57 +01:00
" <td>00:10:32.317</td>\n",
" <td>[90.3, 0.1]</td>\n",
" <td>[100.1, 6.0]</td>\n",
" <td>Kit Graham</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" <tr>\n",
2022-11-14 11:30:57 +01:00
" <th>249</th>\n",
" <td>cd1bccf3-7134-4b96-8c40-da0f3ce1727c</td>\n",
2019-06-03 13:31:10 +02:00
" <td>1</td>\n",
2022-11-14 11:30:57 +01:00
" <td>00:10:34.606</td>\n",
" <td>[95.5, 7.2]</td>\n",
" <td>[85.8, 8.9]</td>\n",
" <td>Gemma Suzanne Davison</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" <tr>\n",
2022-11-14 11:30:57 +01:00
" <th>264</th>\n",
" <td>fb634c2c-baa8-4bb8-94a1-3dcfdd21d88d</td>\n",
2019-06-03 13:31:10 +02:00
" <td>1</td>\n",
2022-11-14 11:30:57 +01:00
" <td>00:10:49.882</td>\n",
" <td>[82.4, 23.0]</td>\n",
" <td>[88.1, 23.9]</td>\n",
" <td>Gemma Suzanne Davison</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" <tr>\n",
2022-11-14 11:30:57 +01:00
" <th>316</th>\n",
" <td>b67c527f-c798-4c08-9109-3073328a4b53</td>\n",
2019-06-03 13:31:10 +02:00
" <td>1</td>\n",
2022-11-14 11:30:57 +01:00
" <td>00:12:17.503</td>\n",
" <td>[33.9, 0.1]</td>\n",
" <td>[49.7, 4.3]</td>\n",
" <td>Gemma Suzanne Davison</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id period timestamp location \\\n",
2022-11-14 11:30:57 +01:00
"76 d91462cf-c8c3-4043-b866-62b1d042d793 1 00:01:20.983 [72.8, 0.1] \n",
"241 78a5be08-f6a9-4e94-974e-36ffaecc0014 1 00:10:32.317 [90.3, 0.1] \n",
"249 cd1bccf3-7134-4b96-8c40-da0f3ce1727c 1 00:10:34.606 [95.5, 7.2] \n",
"264 fb634c2c-baa8-4bb8-94a1-3dcfdd21d88d 1 00:10:49.882 [82.4, 23.0] \n",
"316 b67c527f-c798-4c08-9109-3073328a4b53 1 00:12:17.503 [33.9, 0.1] \n",
2019-06-03 13:31:10 +02:00
"\n",
2022-11-14 11:30:57 +01:00
" pass_end_location pass_recipient_name \n",
"76 [70.8, 15.7] Josie Green \n",
"241 [100.1, 6.0] Kit Graham \n",
"249 [85.8, 8.9] Gemma Suzanne Davison \n",
"264 [88.1, 23.9] Gemma Suzanne Davison \n",
"316 [49.7, 4.3] Gemma Suzanne Davison "
2019-06-03 13:31:10 +02:00
]
},
2022-11-14 11:30:57 +01:00
"execution_count": 19,
2019-06-03 13:31:10 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2022-11-14 11:30:57 +01:00
"ozil_pass = df[(df.type_name == 'Pass') & (df.player_name == player_name) ]\n",
2019-06-03 13:31:10 +02:00
"pass_column = [i for i in df.columns if i.startswith(\"pass\")]\n",
"ozil_pass = ozil_pass[[\"id\", \"period\", \"timestamp\", \"location\", \"pass_end_location\", \"pass_recipient_name\"]]\n",
"ozil_pass.head()"
]
},
{
"cell_type": "code",
2022-11-14 11:30:57 +01:00
"execution_count": 15,
2019-06-03 13:31:10 +02:00
"metadata": {},
"outputs": [],
"source": [
"def draw_pitch(ax):\n",
" # focus on only half of the pitch\n",
" #Pitch Outline & Centre Line\n",
" Pitch = Rectangle([0,0], width = 120, height = 80, fill = False)\n",
" #Left, Right Penalty Area and midline\n",
" LeftPenalty = Rectangle([0,22.3], width = 14.6, height = 35.3, fill = False)\n",
" RightPenalty = Rectangle([105.4,22.3], width = 14.6, height = 35.3, fill = False)\n",
" midline = ConnectionPatch([60,0], [60,80], \"data\", \"data\")\n",
"\n",
" #Left, Right 6-yard Box\n",
" LeftSixYard = Rectangle([0,32], width = 4.9, height = 16, fill = False)\n",
" RightSixYard = Rectangle([115.1,32], width = 4.9, height = 16, fill = False)\n",
"\n",
"\n",
" #Prepare Circles\n",
" centreCircle = plt.Circle((60,40),8.1,color=\"black\", fill = False)\n",
" centreSpot = plt.Circle((60,40),0.71,color=\"black\")\n",
" #Penalty spots and Arcs around penalty boxes\n",
" leftPenSpot = plt.Circle((9.7,40),0.71,color=\"black\")\n",
" rightPenSpot = plt.Circle((110.3,40),0.71,color=\"black\")\n",
" leftArc = Arc((9.7,40),height=16.2,width=16.2,angle=0,theta1=310,theta2=50,color=\"black\")\n",
" rightArc = Arc((110.3,40),height=16.2,width=16.2,angle=0,theta1=130,theta2=230,color=\"black\")\n",
" \n",
" element = [Pitch, LeftPenalty, RightPenalty, midline, LeftSixYard, RightSixYard, centreCircle, \n",
" centreSpot, rightPenSpot, leftPenSpot, leftArc, rightArc]\n",
" for i in element:\n",
" ax.add_patch(i)"
]
},
{
"cell_type": "code",
2022-11-14 11:30:57 +01:00
"execution_count": 21,
2019-06-03 13:31:10 +02:00
"metadata": {},
"outputs": [
{
"data": {
2022-11-14 11:30:57 +01:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAasAAAE/CAYAAAD45uw4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAB3ZElEQVR4nO2dZ3RUVReG30MRCL1XIfTeE0BAREEIRYpURQhFAVFBUQFFwYaIigiCNJGOdKnSi4DU0DuhhF4SOiF99vfjzXwJkDL9ziTnWWtWkpm59+7JzJx9dlciAo1Go9Fo3Jk0Rgug0Wg0Gk1yaGWl0Wg0GrdHKyuNRqPRuD1aWWk0Go3G7dHKSqPRaDRuj1ZWGo1Go3F7tLLSaNwUpdSLSqnTNh47Qyn1nb3HKqUaKqWu2HIejcaRaGWlSTEopYKUUmFKqUfxbuONlutplFJfKaVEKTXgqfsHxN7/FQCIyHYRKRvv8SClVGMXi6vRuAVaWWlSGq+JSJZ4t/eNFigRzgDo9tR9/rH3azSap9DKSpMqUEp1V0r9p5Qao5S6p5Q6r5SqG3v/ZaXULaWUf7znz1BK/a6UWhNrof2nlCqglPpVKXVXKXVKKVU93vOHKKXOKaUeKqVOKKXaJiPSPgBeSqmKscdXBJAx9n7zOf/vglNKzQZQFMDKWHkGxd5fXym1M/Y1XVZKdY93jZxKqdWxMu1RSpWMd+5ySqkNSqk7SqnTSqmOtv5vNRpXoJWVJjVRG8ARALkBzAMwH4AvgFIA3gIwXimVJd7zOwL4AkAeABEAdgE4EPv3YgC/xHvuOQAvAsgO4GsAc5RSBZORZzbirCv/2L8TRES6AriEOMvxR6VUMQBrAPwGIC+AagAOxTusc6wsOQGcBTACAJRSmQFsiP0f5It93u9KqQrJyKvRGIZWVpqUxrJYK8N8eyfeYxdEZLqIxABYAOB5AN+ISISIrAcQCSouM3+LyH4RCQfwN4BwEZkV7/j/W1YiskhEromISUQWAAgEUCsZWecAeEMplR5UGHOsfK1vAtgoIn+JSJSI3BaRQ0/Jv1dEogHMBZUZALQEEBT7v4gWkYMAlgDoYOX1NRqXkc5oATQaB9NGRDYm8tjNeL+HAYCIPH1fliSen+hzlVLdAAwE4B17VxbQAksUEbmklDoL4HsAgSJyWSmV1CFP8zxo0SXGjXi/P44nbzEAtZVS9+I9ng5JWHYajdFoZaXR2EmsO24qgEYAdolIjFLqEABLNM8sAH8C6GHBc58ekXAZyVtvCXEZwL8i8qoNx2o0hqDdgBqN/WQGFUkwACilegCoZOGxCwA0AbDQgufeBFAi3t9zATRWSnVUSqVTSuVWSlWz4DyrAJRRSnVVSqWPvfkqpcpbKLNG43K0stKkNMzZcubb386+oIicADAaTMC4CaAygP8sPDZMRDaKSJgFTx8J4IvYWNwnInIJQHMAHwO4AyZXVLXgmg9BBdkZwDXQXTgKQAZLZNZojEDp4YsajUajcXe0ZaXRaDQat0crK41Go9G4PVpZaTQajcbt0cpKo9FoNG6PVlYajUajcXtcWhScJ08e8fb2duUlNRqNRuPG7N+/P0RE8ib3PJcqK29vbwQEBLjykhqNRqNxY5RSFy15nnYDajQajcbtsUhZKaU+UkodV0odU0r9pZTKqJQqHjsj56xSaoFS6jlnC6vRaDSa1EmyykopVRhAfwA+IlIJQFqwTcsoAGNEpBSAuwB6OVNQjUaj0aReLHUDpgOQSSmVDoAXgOsAXgEH0AHATABtHC6dRqPRaDSwIMFCRK4qpX4Gp5SGAVgPYD+Ae7FD3QDgCoDCCR2vlOoNoDcAFC1aNMFreHt74+JFi2JsGo1Go/FAihUrhqCgIJuPT1ZZKaVyAmgNoDiAewAWAfCz9AIiMgXAFADw8fFJsGvuxYsXoRvqalILM2bMwNatWzFjxgyjRdFoXIIIkCaNVYNFn8ESN2BjcBx4sIhEAVgKoB6AHLFuQQAoAuCqXZJoNBqNJkXy5psAUN+uc1iirC4BqKOU8lKcud0IwAkAWwC0j32OP4Dldkmi0Wg0mhQJy2uD7TpHsspKRPaAiRQHAByNPWYKgMEABiqlzgLIDWCaXZJoNBqNJsUREQFcvgwA5+w6j0UdLERkOIDhT919HkAtu66u0Wg0mhTN2bOAtzdw+nR0ss9NCt3BQqPRaDRO49QpoFw5+8+jlZVGo9FonIZWVhqNRqNxe7Sy0mg0Go3bo5WVRqPRaNwaESqrsmXtP5dWVhqNRqNxCteuAZkzAzlz2n8uraw0Go1G4xQc5QIEtLLSaDQajZPQykqj0Wg0bo9WVhqNRqNxe7Sy0mg0Go3bo5WVRqPRaNyahw+B27eBRGbuWo1WVhqNRqNxOGfOAGXKAGkcpGW0stJoNBqNw3GkCxDQykqj0Wg0TkArK41Go9G4PVpZaTQajcbt0cpKo9GkWP75B/jiCyDavqGyGoOJieGE4DJlHHdOraw0Go3bUKcOEBAANG4M3LxptDQaWwkKAvLnB7y8HHdOraw0Go3bkCsXsHo18NJLgI8PsHOn0RJpbMFRY0Hio5WVRqNxK9KmBb7+Gpg0CWjbFhg3jnORNJ6Do+NVgFZWGo3GTWnRAti1C5g+HejSBQgNNVoijaVoZaXRaFIVJUrQFfjcc0Dt2uyKoLGM48eBEyeMubYhykopVVYpdSje7YFS6kOlVC6l1AalVGDsTwfMgtRoNJonyZSJ1tUHHwD16wN//220RJ7BjBnAypXGXNsQZSUip0WkmohUA1ATwGMAfwMYAmCTiJQGsCn2b41Go3E4SgF9+jD54sMPgSFDdHp7coSEAHnzGnPdyEigQAHHntdaN2AjAOdE5CKA1gBmxt4/E0AbB8ql0Wg0z+DrC+zfDxw4ADRpAty6ZbRE7ktICJAnj+uve/o0rSqlHHtea5VVZwB/xf6eX0Sux/5+A0B+h0ml0Wg0iZAnD7BmDVC3LlCzJrB7t9ESuSdGKStnuAABK5SVUuo5AK0ALHr6MRERAAkmlyqleiulApRSAcHBwTYLqtFoNGbSpgW++w74/XegVStgwgSd3v40qVZZAWgG4ICImOvKbyqlCgJA7M8EDXIRmSIiPiLik9cIB6pGo0mxvPYaswWnTAG6dQMePzZaIvchNSurNxDnAgSAFQD8Y3/3B7DcUUJpNBqNpZQqxXospdiu6exZoyUynqgo4NEjIEcO11/bUGWllMoM4FUAS+Pd/QOAV5VSgQAax/6t0Wg0LsfLC5g5E3j3XcayVqwwWiJjuX2brascNaXXUiIigMuXgZIlHX/udJY8SURCAeR+6r7bYHagRqPRGI5SVFbVqwMdOwJ79gDffMP4VmrDKBfg2bNAsWIs4nY0uoOFRqNJUdSpw/T23bsBPz8gNeZ1pbR4FaCVlUajSYHkzQusW8fO7T4+wN69RkvkWrSy0mg0Gg8hXTpg5Ehg7FigZUt2cU8t6e1aWWk0Go2H0aYN8N9/rMXq0SN1pLdrZaXRaDQeSOnSjGFFRTFb8Nw5oyVyLkb0BRRxztBFM1pZaTSaVEHmzMCcOcDbb1NhrVpltETOwwjL6to1lhDkyuWc82tlpdFoUg1KAe+/zzEj774LDBsGxMQYLZXjCQ52vbJypgsQ0MpKo9GkQurWBQICgO3bgebNWUSbkjDCsjJ3W3cWWllpNJpUSf78wIYNQNWq7N4eEGC0RI7DCGWlLSuNRqNxEunSAT/+CIweDTRrBvzxh9ESOQatrDQajSYF0q4dsGMHMGYM0KsXEBZmtES28/gx43CZM7v2ulpZaTQajQsoW5b9BENDgXr1gAsXjJbINm7fZtq6oyf1JsWjR7TmihZ13jW0stJoNJpYsmQB/voL8Pdnj8E1a4yWyHqMcAGeOcNaNmc2DdbKSqPRaOKhFDBgALBkCfDOO8BXXwEmk9FSWY61aetRUUzlL12a8TtbcLYLENDKSqPRaBKkfn1g3z5g82b2Frxzx2iJLMNSy+rqVWDoUI70+PBD4Px5oFo1266plZVGo9EYSMGCwKZNQPny7N5+4IDREiWPpcpq/nwmY/T
2019-06-03 13:31:10 +02:00
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig=plt.figure() #set up the figures\n",
"fig.set_size_inches(7, 5)\n",
"ax=fig.add_subplot(1,1,1)\n",
"draw_pitch(ax) #overlay our different objects on the pitch\n",
"plt.ylim(-2, 82)\n",
"plt.xlim(-2, 122)\n",
"#plt.plot(x_axis,y_axis,'ro')\n",
"#plt.plot(x,y,'bo')\n",
"#plt.axis('off')\n",
"\n",
"for i in range(len(ozil_pass)):\n",
" # annotate draw an arrow from a current position to pass_end_location\n",
" ax.annotate(\"\", xy = (ozil_pass.iloc[i]['pass_end_location'][0], ozil_pass.iloc[i]['pass_end_location'][1]), xycoords = 'data',\n",
" xytext = (ozil_pass.iloc[i]['location'][0], ozil_pass.iloc[i]['location'][1]), textcoords = 'data',\n",
" arrowprops=dict(arrowstyle=\"->\",connectionstyle=\"arc3\", color = \"blue\"),)\n",
2022-11-14 11:30:57 +01:00
"plt.title(player_name)\n",
2019-06-03 13:31:10 +02:00
"plt.show()"
]
},
{
"cell_type": "code",
2022-11-14 11:30:57 +01:00
"execution_count": 17,
2019-06-03 13:31:10 +02:00
"metadata": {},
"outputs": [
2022-11-14 11:30:57 +01:00
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/mikolaj/.local/lib/python3.8/site-packages/seaborn/_decorators.py:36: FutureWarning: Pass the following variable as a keyword arg: y. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n",
" warnings.warn(\n"
]
},
2019-06-03 13:31:10 +02:00
{
"data": {
2022-11-14 11:30:57 +01:00
"image/png": "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
2019-06-03 13:31:10 +02:00
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"fig.set_size_inches(7, 5)\n",
"\n",
"x_coord = [i[0] for i in ozil_pass[\"location\"]]\n",
"y_coord = [i[1] for i in ozil_pass[\"location\"]]\n",
"\n",
"#shades: give us the heat map we desire\n",
"# n_levels: draw more lines, the larger n, the more blurry it looks\n",
"sns.kdeplot(x_coord, y_coord, shade = \"True\", color = \"black\", n_levels = 30)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
2022-11-14 11:30:57 +01:00
"display_name": "Python 3.10.6 64-bit",
2019-06-03 13:31:10 +02:00
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
2022-11-14 11:30:57 +01:00
"version": "3.8.12"
},
"vscode": {
"interpreter": {
"hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"
}
2019-06-03 13:31:10 +02:00
}
},
"nbformat": 4,
"nbformat_minor": 2
}