Skip to content

Instantly share code, notes, and snippets.

@Shinichi-Nakagawa
Created January 31, 2018 08:15
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Shinichi-Nakagawa/2cb5368ce2a9d2f994f9c533fa683d9c to your computer and use it in GitHub Desktop.
Save Shinichi-Nakagawa/2cb5368ce2a9d2f994f9c533fa683d9c to your computer and use it in GitHub Desktop.
ダルビッシュ有の2017年投球データをかるーく可視化する
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# kawasaki.rb #056 LT 「BigQueryで軽く投球データを眺める」\n",
"\n",
"## TL;DR\n",
"\n",
"FAしたけど中々決まらないダルビッシュ有さんの2017年投球データの特徴を見る\n",
"\n",
"## 参考\n",
"\n",
"このエントリーのちょっと改良Ver.\n",
"\n",
"[メジャーリーグ全162試合,約72万球のデータをBigQueryに保存する方法(なお分析はまだ) #大晦日ハッカソン](http://shinyorke.hatenablog.com/entry/mlb2017-hack)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"pd.options.display.max_rows = 2000\n",
"pd.options.display.max_columns = 100"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# ダルビッシュさんが投じた全投球\n",
"query = \"select * from [mlbam.pitch] where pit_box_name = 'Darvish'\""
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requesting query... ok.\n",
"Job ID: job_9o9PJCmAFid8NAX0b_5GKCQmObCC\n",
"Query running...\n",
"Query done.\n",
"Cache hit.\n",
"\n",
"Retrieving results...\n",
"Got 3058 rows.\n",
"\n",
"Total time taken 5.1 s.\n",
"Finished at 2018-01-31 17:11:28.\n"
]
}
],
"source": [
"df_darvish = pd.read_gbq(query, 'example-yakiu-db')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3058"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# ダルさんが投げた球数(2017)\n",
"len(df_darvish)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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>ab_number</th>\n",
" <th>away_team_id</th>\n",
" <th>away_team_lg</th>\n",
" <th>ax</th>\n",
" <th>ay</th>\n",
" <th>az</th>\n",
" <th>bat_box_name</th>\n",
" <th>bat_first_name</th>\n",
" <th>bat_hand_cd</th>\n",
" <th>bat_home_id</th>\n",
" <th>bat_last_name</th>\n",
" <th>bat_mlbid</th>\n",
" <th>break_angle</th>\n",
" <th>break_length</th>\n",
" <th>break_y</th>\n",
" <th>day</th>\n",
" <th>end_bases</th>\n",
" <th>end_speed</th>\n",
" <th>event_num</th>\n",
" <th>event_outs_ct</th>\n",
" <th>game_id</th>\n",
" <th>game_type</th>\n",
" <th>game_type_des</th>\n",
" <th>home_team_id</th>\n",
" <th>home_team_lg</th>\n",
" <th>inning_number</th>\n",
" <th>interleague_fl</th>\n",
" <th>local_game_time</th>\n",
" <th>month</th>\n",
" <th>outs_ct</th>\n",
" <th>pa_ball_ct</th>\n",
" <th>pa_event_cd</th>\n",
" <th>pa_strike_ct</th>\n",
" <th>pa_terminal_fl</th>\n",
" <th>park_id</th>\n",
" <th>park_location</th>\n",
" <th>park_name</th>\n",
" <th>pfx_x</th>\n",
" <th>pfx_z</th>\n",
" <th>pit_box_name</th>\n",
" <th>pit_first_name</th>\n",
" <th>pit_hand_cd</th>\n",
" <th>pit_last_name</th>\n",
" <th>pit_mlbid</th>\n",
" <th>pitch_des</th>\n",
" <th>pitch_id</th>\n",
" <th>pitch_res</th>\n",
" <th>pitch_seq</th>\n",
" <th>pitch_type</th>\n",
" <th>pitch_type_seq</th>\n",
" <th>playoff_fl</th>\n",
" <th>px</th>\n",
" <th>pz</th>\n",
" <th>regseason_fl</th>\n",
" <th>retro_game_id</th>\n",
" <th>spin_dir</th>\n",
" <th>spin_rate</th>\n",
" <th>st_fl</th>\n",
" <th>start_bases</th>\n",
" <th>start_speed</th>\n",
" <th>sv_id</th>\n",
" <th>sz_bot</th>\n",
" <th>sz_top</th>\n",
" <th>type_confidence</th>\n",
" <th>vx0</th>\n",
" <th>vy0</th>\n",
" <th>vz0</th>\n",
" <th>x</th>\n",
" <th>x0</th>\n",
" <th>y</th>\n",
" <th>y0</th>\n",
" <th>year</th>\n",
" <th>z0</th>\n",
" <th>zone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>34</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>3.912048</td>\n",
" <td>30.020047</td>\n",
" <td>-3.068221</td>\n",
" <td>Anderson, Ti</td>\n",
" <td>Tim</td>\n",
" <td>R</td>\n",
" <td>0</td>\n",
" <td>Anderson</td>\n",
" <td>641313</td>\n",
" <td>-47.5</td>\n",
" <td>1.5</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>___</td>\n",
" <td>85.6</td>\n",
" <td>253</td>\n",
" <td>1</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>5</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>True</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>2.101215</td>\n",
" <td>15.633144</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>In play, out(s)</td>\n",
" <td>253</td>\n",
" <td>X</td>\n",
" <td>BBBSX</td>\n",
" <td>FF</td>\n",
" <td>SL|FF|FF|FF|FF</td>\n",
" <td>False</td>\n",
" <td>0.125042</td>\n",
" <td>2.884572</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>172.347</td>\n",
" <td>3140.217</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>93.5</td>\n",
" <td>170817_032548</td>\n",
" <td>1.489659</td>\n",
" <td>3.349880</td>\n",
" <td>0.999</td>\n",
" <td>4.850082</td>\n",
" <td>-135.678080</td>\n",
" <td>-6.726057</td>\n",
" <td>111.64</td>\n",
" <td>-1.959410</td>\n",
" <td>160.61</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.610861</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>12</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>18.008213</td>\n",
" <td>23.541138</td>\n",
" <td>-26.669885</td>\n",
" <td>Anderson, Ti</td>\n",
" <td>Tim</td>\n",
" <td>R</td>\n",
" <td>0</td>\n",
" <td>Anderson</td>\n",
" <td>641313</td>\n",
" <td>-34.6</td>\n",
" <td>9.2</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>___</td>\n",
" <td>74.7</td>\n",
" <td>76</td>\n",
" <td>3</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>False</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>12.615907</td>\n",
" <td>3.856019</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>Ball</td>\n",
" <td>76</td>\n",
" <td>B</td>\n",
" <td>B</td>\n",
" <td>SL</td>\n",
" <td>SL</td>\n",
" <td>False</td>\n",
" <td>0.222026</td>\n",
" <td>3.631231</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>106.996</td>\n",
" <td>2297.013</td>\n",
" <td>False</td>\n",
" <td>1__</td>\n",
" <td>81.9</td>\n",
" <td>170817_023241</td>\n",
" <td>1.489706</td>\n",
" <td>3.431588</td>\n",
" <td>0.910</td>\n",
" <td>1.658928</td>\n",
" <td>-118.933093</td>\n",
" <td>0.801311</td>\n",
" <td>105.55</td>\n",
" <td>-2.123328</td>\n",
" <td>140.67</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.715076</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>17</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>13.009854</td>\n",
" <td>24.855924</td>\n",
" <td>-26.581159</td>\n",
" <td>Rodon</td>\n",
" <td>Carlos</td>\n",
" <td>L</td>\n",
" <td>0</td>\n",
" <td>Rodon</td>\n",
" <td>607074</td>\n",
" <td>-26.6</td>\n",
" <td>9.3</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>1__</td>\n",
" <td>72.6</td>\n",
" <td>117</td>\n",
" <td>0</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>3</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>20</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>9.758109</td>\n",
" <td>4.194976</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>Ball</td>\n",
" <td>117</td>\n",
" <td>B</td>\n",
" <td>SB</td>\n",
" <td>SL</td>\n",
" <td>FF|SL</td>\n",
" <td>False</td>\n",
" <td>1.060151</td>\n",
" <td>1.650721</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>113.263</td>\n",
" <td>1775.850</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>79.9</td>\n",
" <td>170817_024531</td>\n",
" <td>1.670886</td>\n",
" <td>3.678705</td>\n",
" <td>0.920</td>\n",
" <td>3.784012</td>\n",
" <td>-115.689080</td>\n",
" <td>-3.674961</td>\n",
" <td>74.33</td>\n",
" <td>-1.871997</td>\n",
" <td>194.55</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.853417</td>\n",
" <td>14.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>18</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>-9.324853</td>\n",
" <td>26.995983</td>\n",
" <td>-13.773599</td>\n",
" <td>Garcia, L</td>\n",
" <td>Leury</td>\n",
" <td>L</td>\n",
" <td>0</td>\n",
" <td>Garcia</td>\n",
" <td>544725</td>\n",
" <td>27.7</td>\n",
" <td>3.7</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>___</td>\n",
" <td>87.1</td>\n",
" <td>125</td>\n",
" <td>2</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>3</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>-4.883337</td>\n",
" <td>9.636140</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>In play, out(s)</td>\n",
" <td>125</td>\n",
" <td>X</td>\n",
" <td>X</td>\n",
" <td>FF</td>\n",
" <td>FF</td>\n",
" <td>False</td>\n",
" <td>-0.073010</td>\n",
" <td>1.455514</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>206.873</td>\n",
" <td>2191.227</td>\n",
" <td>False</td>\n",
" <td>1__</td>\n",
" <td>94.1</td>\n",
" <td>170817_024737</td>\n",
" <td>1.620381</td>\n",
" <td>3.346632</td>\n",
" <td>0.986</td>\n",
" <td>6.512274</td>\n",
" <td>-136.577354</td>\n",
" <td>-8.462723</td>\n",
" <td>119.78</td>\n",
" <td>-1.841785</td>\n",
" <td>199.48</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.518560</td>\n",
" <td>13.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>43</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>11.500905</td>\n",
" <td>22.559867</td>\n",
" <td>-29.147289</td>\n",
" <td>Garcia, A</td>\n",
" <td>Avisail</td>\n",
" <td>R</td>\n",
" <td>0</td>\n",
" <td>Garcia</td>\n",
" <td>541645</td>\n",
" <td>-22.1</td>\n",
" <td>9.3</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>___</td>\n",
" <td>72.9</td>\n",
" <td>312</td>\n",
" <td>1</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>False</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>8.424712</td>\n",
" <td>2.217180</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>Ball</td>\n",
" <td>312</td>\n",
" <td>B</td>\n",
" <td>B</td>\n",
" <td>SL</td>\n",
" <td>SL</td>\n",
" <td>False</td>\n",
" <td>-0.644955</td>\n",
" <td>3.727444</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>104.745</td>\n",
" <td>1483.257</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>80.2</td>\n",
" <td>170817_034310</td>\n",
" <td>1.759547</td>\n",
" <td>3.668450</td>\n",
" <td>0.916</td>\n",
" <td>1.196287</td>\n",
" <td>-116.321308</td>\n",
" <td>1.445996</td>\n",
" <td>140.52</td>\n",
" <td>-2.260345</td>\n",
" <td>138.52</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.868599</td>\n",
" <td>11.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ab_number away_team_id away_team_lg ax ay az \\\n",
"0 34 cha AL 3.912048 30.020047 -3.068221 \n",
"1 12 cha AL 18.008213 23.541138 -26.669885 \n",
"2 17 cha AL 13.009854 24.855924 -26.581159 \n",
"3 18 cha AL -9.324853 26.995983 -13.773599 \n",
"4 43 cha AL 11.500905 22.559867 -29.147289 \n",
"\n",
" bat_box_name bat_first_name bat_hand_cd bat_home_id bat_last_name \\\n",
"0 Anderson, Ti Tim R 0 Anderson \n",
"1 Anderson, Ti Tim R 0 Anderson \n",
"2 Rodon Carlos L 0 Rodon \n",
"3 Garcia, L Leury L 0 Garcia \n",
"4 Garcia, A Avisail R 0 Garcia \n",
"\n",
" bat_mlbid break_angle break_length break_y day end_bases end_speed \\\n",
"0 641313 -47.5 1.5 23.8 16 ___ 85.6 \n",
"1 641313 -34.6 9.2 23.8 16 ___ 74.7 \n",
"2 607074 -26.6 9.3 23.8 16 1__ 72.6 \n",
"3 544725 27.7 3.7 23.8 16 ___ 87.1 \n",
"4 541645 -22.1 9.3 23.8 16 ___ 72.9 \n",
"\n",
" event_num event_outs_ct game_id game_type game_type_des home_team_id \\\n",
"0 253 1 491891 R Regular Season lan \n",
"1 76 3 491891 R Regular Season lan \n",
"2 117 0 491891 R Regular Season lan \n",
"3 125 2 491891 R Regular Season lan \n",
"4 312 1 491891 R Regular Season lan \n",
"\n",
" home_team_lg inning_number interleague_fl local_game_time month outs_ct \\\n",
"0 NL 5 True 19:10 8 0 \n",
"1 NL 2 True 19:10 8 2 \n",
"2 NL 3 True 19:10 8 0 \n",
"3 NL 3 True 19:10 8 0 \n",
"4 NL 6 True 19:10 8 0 \n",
"\n",
" pa_ball_ct pa_event_cd pa_strike_ct pa_terminal_fl park_id \\\n",
"0 3 2 1 True 22 \n",
"1 0 2 0 False 22 \n",
"2 0 20 1 False 22 \n",
"3 0 2 0 True 22 \n",
"4 0 2 0 False 22 \n",
"\n",
" park_location park_name pfx_x pfx_z pit_box_name \\\n",
"0 Los Angeles, CA Dodger Stadium 2.101215 15.633144 Darvish \n",
"1 Los Angeles, CA Dodger Stadium 12.615907 3.856019 Darvish \n",
"2 Los Angeles, CA Dodger Stadium 9.758109 4.194976 Darvish \n",
"3 Los Angeles, CA Dodger Stadium -4.883337 9.636140 Darvish \n",
"4 Los Angeles, CA Dodger Stadium 8.424712 2.217180 Darvish \n",
"\n",
" pit_first_name pit_hand_cd pit_last_name pit_mlbid pitch_des \\\n",
"0 Yu R Darvish 506433 In play, out(s) \n",
"1 Yu R Darvish 506433 Ball \n",
"2 Yu R Darvish 506433 Ball \n",
"3 Yu R Darvish 506433 In play, out(s) \n",
"4 Yu R Darvish 506433 Ball \n",
"\n",
" pitch_id pitch_res pitch_seq pitch_type pitch_type_seq playoff_fl \\\n",
"0 253 X BBBSX FF SL|FF|FF|FF|FF False \n",
"1 76 B B SL SL False \n",
"2 117 B SB SL FF|SL False \n",
"3 125 X X FF FF False \n",
"4 312 B B SL SL False \n",
"\n",
" px pz regseason_fl retro_game_id spin_dir spin_rate st_fl \\\n",
"0 0.125042 2.884572 True LAN201708160 172.347 3140.217 False \n",
"1 0.222026 3.631231 True LAN201708160 106.996 2297.013 False \n",
"2 1.060151 1.650721 True LAN201708160 113.263 1775.850 False \n",
"3 -0.073010 1.455514 True LAN201708160 206.873 2191.227 False \n",
"4 -0.644955 3.727444 True LAN201708160 104.745 1483.257 False \n",
"\n",
" start_bases start_speed sv_id sz_bot sz_top \\\n",
"0 ___ 93.5 170817_032548 1.489659 3.349880 \n",
"1 1__ 81.9 170817_023241 1.489706 3.431588 \n",
"2 ___ 79.9 170817_024531 1.670886 3.678705 \n",
"3 1__ 94.1 170817_024737 1.620381 3.346632 \n",
"4 ___ 80.2 170817_034310 1.759547 3.668450 \n",
"\n",
" type_confidence vx0 vy0 vz0 x x0 y \\\n",
"0 0.999 4.850082 -135.678080 -6.726057 111.64 -1.959410 160.61 \n",
"1 0.910 1.658928 -118.933093 0.801311 105.55 -2.123328 140.67 \n",
"2 0.920 3.784012 -115.689080 -3.674961 74.33 -1.871997 194.55 \n",
"3 0.986 6.512274 -136.577354 -8.462723 119.78 -1.841785 199.48 \n",
"4 0.916 1.196287 -116.321308 1.445996 140.52 -2.260345 138.52 \n",
"\n",
" y0 year z0 zone \n",
"0 50.0 2017 5.610861 2.0 \n",
"1 50.0 2017 5.715076 12.0 \n",
"2 50.0 2017 5.853417 14.0 \n",
"3 50.0 2017 5.518560 13.0 \n",
"4 50.0 2017 5.868599 11.0 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 軽く中身をチェック\n",
"df_darvish.head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# 打者の打席(右 or 左)ごとにDataframeを分ける(ちなみにダルさんは右投げ)\n",
"df_darvish_vs_right = df_darvish.query(\"bat_hand_cd == 'R'\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"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>ab_number</th>\n",
" <th>away_team_id</th>\n",
" <th>away_team_lg</th>\n",
" <th>ax</th>\n",
" <th>ay</th>\n",
" <th>az</th>\n",
" <th>bat_box_name</th>\n",
" <th>bat_first_name</th>\n",
" <th>bat_hand_cd</th>\n",
" <th>bat_home_id</th>\n",
" <th>bat_last_name</th>\n",
" <th>bat_mlbid</th>\n",
" <th>break_angle</th>\n",
" <th>break_length</th>\n",
" <th>break_y</th>\n",
" <th>day</th>\n",
" <th>end_bases</th>\n",
" <th>end_speed</th>\n",
" <th>event_num</th>\n",
" <th>event_outs_ct</th>\n",
" <th>game_id</th>\n",
" <th>game_type</th>\n",
" <th>game_type_des</th>\n",
" <th>home_team_id</th>\n",
" <th>home_team_lg</th>\n",
" <th>inning_number</th>\n",
" <th>interleague_fl</th>\n",
" <th>local_game_time</th>\n",
" <th>month</th>\n",
" <th>outs_ct</th>\n",
" <th>pa_ball_ct</th>\n",
" <th>pa_event_cd</th>\n",
" <th>pa_strike_ct</th>\n",
" <th>pa_terminal_fl</th>\n",
" <th>park_id</th>\n",
" <th>park_location</th>\n",
" <th>park_name</th>\n",
" <th>pfx_x</th>\n",
" <th>pfx_z</th>\n",
" <th>pit_box_name</th>\n",
" <th>pit_first_name</th>\n",
" <th>pit_hand_cd</th>\n",
" <th>pit_last_name</th>\n",
" <th>pit_mlbid</th>\n",
" <th>pitch_des</th>\n",
" <th>pitch_id</th>\n",
" <th>pitch_res</th>\n",
" <th>pitch_seq</th>\n",
" <th>pitch_type</th>\n",
" <th>pitch_type_seq</th>\n",
" <th>playoff_fl</th>\n",
" <th>px</th>\n",
" <th>pz</th>\n",
" <th>regseason_fl</th>\n",
" <th>retro_game_id</th>\n",
" <th>spin_dir</th>\n",
" <th>spin_rate</th>\n",
" <th>st_fl</th>\n",
" <th>start_bases</th>\n",
" <th>start_speed</th>\n",
" <th>sv_id</th>\n",
" <th>sz_bot</th>\n",
" <th>sz_top</th>\n",
" <th>type_confidence</th>\n",
" <th>vx0</th>\n",
" <th>vy0</th>\n",
" <th>vz0</th>\n",
" <th>x</th>\n",
" <th>x0</th>\n",
" <th>y</th>\n",
" <th>y0</th>\n",
" <th>year</th>\n",
" <th>z0</th>\n",
" <th>zone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>34</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>3.912048</td>\n",
" <td>30.020047</td>\n",
" <td>-3.068221</td>\n",
" <td>Anderson, Ti</td>\n",
" <td>Tim</td>\n",
" <td>R</td>\n",
" <td>0</td>\n",
" <td>Anderson</td>\n",
" <td>641313</td>\n",
" <td>-47.5</td>\n",
" <td>1.5</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>___</td>\n",
" <td>85.6</td>\n",
" <td>253</td>\n",
" <td>1</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>5</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>True</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>2.101215</td>\n",
" <td>15.633144</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>In play, out(s)</td>\n",
" <td>253</td>\n",
" <td>X</td>\n",
" <td>BBBSX</td>\n",
" <td>FF</td>\n",
" <td>SL|FF|FF|FF|FF</td>\n",
" <td>False</td>\n",
" <td>0.125042</td>\n",
" <td>2.884572</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>172.347</td>\n",
" <td>3140.217</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>93.5</td>\n",
" <td>170817_032548</td>\n",
" <td>1.489659</td>\n",
" <td>3.349880</td>\n",
" <td>0.999</td>\n",
" <td>4.850082</td>\n",
" <td>-135.678080</td>\n",
" <td>-6.726057</td>\n",
" <td>111.64</td>\n",
" <td>-1.959410</td>\n",
" <td>160.61</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.610861</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>12</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>18.008213</td>\n",
" <td>23.541138</td>\n",
" <td>-26.669885</td>\n",
" <td>Anderson, Ti</td>\n",
" <td>Tim</td>\n",
" <td>R</td>\n",
" <td>0</td>\n",
" <td>Anderson</td>\n",
" <td>641313</td>\n",
" <td>-34.6</td>\n",
" <td>9.2</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>___</td>\n",
" <td>74.7</td>\n",
" <td>76</td>\n",
" <td>3</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>False</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>12.615907</td>\n",
" <td>3.856019</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>Ball</td>\n",
" <td>76</td>\n",
" <td>B</td>\n",
" <td>B</td>\n",
" <td>SL</td>\n",
" <td>SL</td>\n",
" <td>False</td>\n",
" <td>0.222026</td>\n",
" <td>3.631231</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>106.996</td>\n",
" <td>2297.013</td>\n",
" <td>False</td>\n",
" <td>1__</td>\n",
" <td>81.9</td>\n",
" <td>170817_023241</td>\n",
" <td>1.489706</td>\n",
" <td>3.431588</td>\n",
" <td>0.910</td>\n",
" <td>1.658928</td>\n",
" <td>-118.933093</td>\n",
" <td>0.801311</td>\n",
" <td>105.55</td>\n",
" <td>-2.123328</td>\n",
" <td>140.67</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.715076</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>43</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>11.500905</td>\n",
" <td>22.559867</td>\n",
" <td>-29.147289</td>\n",
" <td>Garcia, A</td>\n",
" <td>Avisail</td>\n",
" <td>R</td>\n",
" <td>0</td>\n",
" <td>Garcia</td>\n",
" <td>541645</td>\n",
" <td>-22.1</td>\n",
" <td>9.3</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>___</td>\n",
" <td>72.9</td>\n",
" <td>312</td>\n",
" <td>1</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>False</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>8.424712</td>\n",
" <td>2.217180</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>Ball</td>\n",
" <td>312</td>\n",
" <td>B</td>\n",
" <td>B</td>\n",
" <td>SL</td>\n",
" <td>SL</td>\n",
" <td>False</td>\n",
" <td>-0.644955</td>\n",
" <td>3.727444</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>104.745</td>\n",
" <td>1483.257</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>80.2</td>\n",
" <td>170817_034310</td>\n",
" <td>1.759547</td>\n",
" <td>3.668450</td>\n",
" <td>0.916</td>\n",
" <td>1.196287</td>\n",
" <td>-116.321308</td>\n",
" <td>1.445996</td>\n",
" <td>140.52</td>\n",
" <td>-2.260345</td>\n",
" <td>138.52</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.868599</td>\n",
" <td>11.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>34</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>-7.986704</td>\n",
" <td>26.985152</td>\n",
" <td>-16.009360</td>\n",
" <td>Anderson, Ti</td>\n",
" <td>Tim</td>\n",
" <td>R</td>\n",
" <td>0</td>\n",
" <td>Anderson</td>\n",
" <td>641313</td>\n",
" <td>23.5</td>\n",
" <td>4.0</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>___</td>\n",
" <td>85.8</td>\n",
" <td>251</td>\n",
" <td>1</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>5</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>False</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>-4.255396</td>\n",
" <td>8.612708</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>Ball</td>\n",
" <td>251</td>\n",
" <td>B</td>\n",
" <td>BBB</td>\n",
" <td>FF</td>\n",
" <td>SL|FF|FF</td>\n",
" <td>False</td>\n",
" <td>-1.267461</td>\n",
" <td>2.611426</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>206.292</td>\n",
" <td>1930.413</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>93.2</td>\n",
" <td>170817_032455</td>\n",
" <td>1.428085</td>\n",
" <td>3.369991</td>\n",
" <td>0.978</td>\n",
" <td>3.099816</td>\n",
" <td>-135.503040</td>\n",
" <td>-5.083476</td>\n",
" <td>163.14</td>\n",
" <td>-1.868020</td>\n",
" <td>167.92</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.614015</td>\n",
" <td>11.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>9</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>-2.935963</td>\n",
" <td>30.548644</td>\n",
" <td>-6.759419</td>\n",
" <td>Garcia, A</td>\n",
" <td>Avisail</td>\n",
" <td>R</td>\n",
" <td>0</td>\n",
" <td>Garcia</td>\n",
" <td>541645</td>\n",
" <td>15.8</td>\n",
" <td>1.8</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>___</td>\n",
" <td>85.7</td>\n",
" <td>58</td>\n",
" <td>1</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>-1.555003</td>\n",
" <td>13.460600</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>Foul</td>\n",
" <td>58</td>\n",
" <td>S</td>\n",
" <td>SSBBS</td>\n",
" <td>FF</td>\n",
" <td>SL|FF|FF|SL|FF</td>\n",
" <td>False</td>\n",
" <td>-1.187132</td>\n",
" <td>2.788718</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>186.588</td>\n",
" <td>2716.053</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>94.1</td>\n",
" <td>170817_022832</td>\n",
" <td>1.646885</td>\n",
" <td>3.535311</td>\n",
" <td>0.999</td>\n",
" <td>2.863971</td>\n",
" <td>-136.655057</td>\n",
" <td>-6.337949</td>\n",
" <td>161.72</td>\n",
" <td>-2.047422</td>\n",
" <td>163.09</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.604344</td>\n",
" <td>11.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ab_number away_team_id away_team_lg ax ay az \\\n",
"0 34 cha AL 3.912048 30.020047 -3.068221 \n",
"1 12 cha AL 18.008213 23.541138 -26.669885 \n",
"4 43 cha AL 11.500905 22.559867 -29.147289 \n",
"5 34 cha AL -7.986704 26.985152 -16.009360 \n",
"10 9 cha AL -2.935963 30.548644 -6.759419 \n",
"\n",
" bat_box_name bat_first_name bat_hand_cd bat_home_id bat_last_name \\\n",
"0 Anderson, Ti Tim R 0 Anderson \n",
"1 Anderson, Ti Tim R 0 Anderson \n",
"4 Garcia, A Avisail R 0 Garcia \n",
"5 Anderson, Ti Tim R 0 Anderson \n",
"10 Garcia, A Avisail R 0 Garcia \n",
"\n",
" bat_mlbid break_angle break_length break_y day end_bases end_speed \\\n",
"0 641313 -47.5 1.5 23.8 16 ___ 85.6 \n",
"1 641313 -34.6 9.2 23.8 16 ___ 74.7 \n",
"4 541645 -22.1 9.3 23.8 16 ___ 72.9 \n",
"5 641313 23.5 4.0 23.8 16 ___ 85.8 \n",
"10 541645 15.8 1.8 23.8 16 ___ 85.7 \n",
"\n",
" event_num event_outs_ct game_id game_type game_type_des home_team_id \\\n",
"0 253 1 491891 R Regular Season lan \n",
"1 76 3 491891 R Regular Season lan \n",
"4 312 1 491891 R Regular Season lan \n",
"5 251 1 491891 R Regular Season lan \n",
"10 58 1 491891 R Regular Season lan \n",
"\n",
" home_team_lg inning_number interleague_fl local_game_time month \\\n",
"0 NL 5 True 19:10 8 \n",
"1 NL 2 True 19:10 8 \n",
"4 NL 6 True 19:10 8 \n",
"5 NL 5 True 19:10 8 \n",
"10 NL 2 True 19:10 8 \n",
"\n",
" outs_ct pa_ball_ct pa_event_cd pa_strike_ct pa_terminal_fl park_id \\\n",
"0 0 3 2 1 True 22 \n",
"1 2 0 2 0 False 22 \n",
"4 0 0 2 0 False 22 \n",
"5 0 2 2 0 False 22 \n",
"10 0 2 2 2 False 22 \n",
"\n",
" park_location park_name pfx_x pfx_z pit_box_name \\\n",
"0 Los Angeles, CA Dodger Stadium 2.101215 15.633144 Darvish \n",
"1 Los Angeles, CA Dodger Stadium 12.615907 3.856019 Darvish \n",
"4 Los Angeles, CA Dodger Stadium 8.424712 2.217180 Darvish \n",
"5 Los Angeles, CA Dodger Stadium -4.255396 8.612708 Darvish \n",
"10 Los Angeles, CA Dodger Stadium -1.555003 13.460600 Darvish \n",
"\n",
" pit_first_name pit_hand_cd pit_last_name pit_mlbid pitch_des \\\n",
"0 Yu R Darvish 506433 In play, out(s) \n",
"1 Yu R Darvish 506433 Ball \n",
"4 Yu R Darvish 506433 Ball \n",
"5 Yu R Darvish 506433 Ball \n",
"10 Yu R Darvish 506433 Foul \n",
"\n",
" pitch_id pitch_res pitch_seq pitch_type pitch_type_seq playoff_fl \\\n",
"0 253 X BBBSX FF SL|FF|FF|FF|FF False \n",
"1 76 B B SL SL False \n",
"4 312 B B SL SL False \n",
"5 251 B BBB FF SL|FF|FF False \n",
"10 58 S SSBBS FF SL|FF|FF|SL|FF False \n",
"\n",
" px pz regseason_fl retro_game_id spin_dir spin_rate \\\n",
"0 0.125042 2.884572 True LAN201708160 172.347 3140.217 \n",
"1 0.222026 3.631231 True LAN201708160 106.996 2297.013 \n",
"4 -0.644955 3.727444 True LAN201708160 104.745 1483.257 \n",
"5 -1.267461 2.611426 True LAN201708160 206.292 1930.413 \n",
"10 -1.187132 2.788718 True LAN201708160 186.588 2716.053 \n",
"\n",
" st_fl start_bases start_speed sv_id sz_bot sz_top \\\n",
"0 False ___ 93.5 170817_032548 1.489659 3.349880 \n",
"1 False 1__ 81.9 170817_023241 1.489706 3.431588 \n",
"4 False ___ 80.2 170817_034310 1.759547 3.668450 \n",
"5 False ___ 93.2 170817_032455 1.428085 3.369991 \n",
"10 False ___ 94.1 170817_022832 1.646885 3.535311 \n",
"\n",
" type_confidence vx0 vy0 vz0 x x0 y \\\n",
"0 0.999 4.850082 -135.678080 -6.726057 111.64 -1.959410 160.61 \n",
"1 0.910 1.658928 -118.933093 0.801311 105.55 -2.123328 140.67 \n",
"4 0.916 1.196287 -116.321308 1.445996 140.52 -2.260345 138.52 \n",
"5 0.978 3.099816 -135.503040 -5.083476 163.14 -1.868020 167.92 \n",
"10 0.999 2.863971 -136.655057 -6.337949 161.72 -2.047422 163.09 \n",
"\n",
" y0 year z0 zone \n",
"0 50.0 2017 5.610861 2.0 \n",
"1 50.0 2017 5.715076 12.0 \n",
"4 50.0 2017 5.868599 11.0 \n",
"5 50.0 2017 5.614015 11.0 \n",
"10 50.0 2017 5.604344 11.0 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_darvish_vs_right.head()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"df_darvish_vs_left = df_darvish.query(\"bat_hand_cd == 'L'\")"
]
},
{
"cell_type": "code",
"execution_count": 9,
"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>ab_number</th>\n",
" <th>away_team_id</th>\n",
" <th>away_team_lg</th>\n",
" <th>ax</th>\n",
" <th>ay</th>\n",
" <th>az</th>\n",
" <th>bat_box_name</th>\n",
" <th>bat_first_name</th>\n",
" <th>bat_hand_cd</th>\n",
" <th>bat_home_id</th>\n",
" <th>bat_last_name</th>\n",
" <th>bat_mlbid</th>\n",
" <th>break_angle</th>\n",
" <th>break_length</th>\n",
" <th>break_y</th>\n",
" <th>day</th>\n",
" <th>end_bases</th>\n",
" <th>end_speed</th>\n",
" <th>event_num</th>\n",
" <th>event_outs_ct</th>\n",
" <th>game_id</th>\n",
" <th>game_type</th>\n",
" <th>game_type_des</th>\n",
" <th>home_team_id</th>\n",
" <th>home_team_lg</th>\n",
" <th>inning_number</th>\n",
" <th>interleague_fl</th>\n",
" <th>local_game_time</th>\n",
" <th>month</th>\n",
" <th>outs_ct</th>\n",
" <th>pa_ball_ct</th>\n",
" <th>pa_event_cd</th>\n",
" <th>pa_strike_ct</th>\n",
" <th>pa_terminal_fl</th>\n",
" <th>park_id</th>\n",
" <th>park_location</th>\n",
" <th>park_name</th>\n",
" <th>pfx_x</th>\n",
" <th>pfx_z</th>\n",
" <th>pit_box_name</th>\n",
" <th>pit_first_name</th>\n",
" <th>pit_hand_cd</th>\n",
" <th>pit_last_name</th>\n",
" <th>pit_mlbid</th>\n",
" <th>pitch_des</th>\n",
" <th>pitch_id</th>\n",
" <th>pitch_res</th>\n",
" <th>pitch_seq</th>\n",
" <th>pitch_type</th>\n",
" <th>pitch_type_seq</th>\n",
" <th>playoff_fl</th>\n",
" <th>px</th>\n",
" <th>pz</th>\n",
" <th>regseason_fl</th>\n",
" <th>retro_game_id</th>\n",
" <th>spin_dir</th>\n",
" <th>spin_rate</th>\n",
" <th>st_fl</th>\n",
" <th>start_bases</th>\n",
" <th>start_speed</th>\n",
" <th>sv_id</th>\n",
" <th>sz_bot</th>\n",
" <th>sz_top</th>\n",
" <th>type_confidence</th>\n",
" <th>vx0</th>\n",
" <th>vy0</th>\n",
" <th>vz0</th>\n",
" <th>x</th>\n",
" <th>x0</th>\n",
" <th>y</th>\n",
" <th>y0</th>\n",
" <th>year</th>\n",
" <th>z0</th>\n",
" <th>zone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>17</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>13.009854</td>\n",
" <td>24.855924</td>\n",
" <td>-26.581159</td>\n",
" <td>Rodon</td>\n",
" <td>Carlos</td>\n",
" <td>L</td>\n",
" <td>0</td>\n",
" <td>Rodon</td>\n",
" <td>607074</td>\n",
" <td>-26.6</td>\n",
" <td>9.3</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>1__</td>\n",
" <td>72.6</td>\n",
" <td>117</td>\n",
" <td>0</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>3</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>20</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>9.758109</td>\n",
" <td>4.194976</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>Ball</td>\n",
" <td>117</td>\n",
" <td>B</td>\n",
" <td>SB</td>\n",
" <td>SL</td>\n",
" <td>FF|SL</td>\n",
" <td>False</td>\n",
" <td>1.060151</td>\n",
" <td>1.650721</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>113.263</td>\n",
" <td>1775.850</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>79.9</td>\n",
" <td>170817_024531</td>\n",
" <td>1.670886</td>\n",
" <td>3.678705</td>\n",
" <td>0.920</td>\n",
" <td>3.784012</td>\n",
" <td>-115.689080</td>\n",
" <td>-3.674961</td>\n",
" <td>74.33</td>\n",
" <td>-1.871997</td>\n",
" <td>194.55</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.853417</td>\n",
" <td>14.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>18</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>-9.324853</td>\n",
" <td>26.995983</td>\n",
" <td>-13.773599</td>\n",
" <td>Garcia, L</td>\n",
" <td>Leury</td>\n",
" <td>L</td>\n",
" <td>0</td>\n",
" <td>Garcia</td>\n",
" <td>544725</td>\n",
" <td>27.7</td>\n",
" <td>3.7</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>___</td>\n",
" <td>87.1</td>\n",
" <td>125</td>\n",
" <td>2</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>3</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>-4.883337</td>\n",
" <td>9.636140</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>In play, out(s)</td>\n",
" <td>125</td>\n",
" <td>X</td>\n",
" <td>X</td>\n",
" <td>FF</td>\n",
" <td>FF</td>\n",
" <td>False</td>\n",
" <td>-0.073010</td>\n",
" <td>1.455514</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>206.873</td>\n",
" <td>2191.227</td>\n",
" <td>False</td>\n",
" <td>1__</td>\n",
" <td>94.1</td>\n",
" <td>170817_024737</td>\n",
" <td>1.620381</td>\n",
" <td>3.346632</td>\n",
" <td>0.986</td>\n",
" <td>6.512274</td>\n",
" <td>-136.577354</td>\n",
" <td>-8.462723</td>\n",
" <td>119.78</td>\n",
" <td>-1.841785</td>\n",
" <td>199.48</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.518560</td>\n",
" <td>13.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>27</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>8.959741</td>\n",
" <td>25.257839</td>\n",
" <td>-17.386350</td>\n",
" <td>Moncada</td>\n",
" <td>Yoan</td>\n",
" <td>L</td>\n",
" <td>0</td>\n",
" <td>Moncada</td>\n",
" <td>660162</td>\n",
" <td>-26.6</td>\n",
" <td>4.9</td>\n",
" <td>23.9</td>\n",
" <td>16</td>\n",
" <td>___</td>\n",
" <td>83.0</td>\n",
" <td>186</td>\n",
" <td>3</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>4</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>False</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>5.143431</td>\n",
" <td>8.489030</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>Ball</td>\n",
" <td>186</td>\n",
" <td>B</td>\n",
" <td>B</td>\n",
" <td>FC</td>\n",
" <td>FC</td>\n",
" <td>False</td>\n",
" <td>-0.148311</td>\n",
" <td>1.165639</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>148.790</td>\n",
" <td>1920.812</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>89.9</td>\n",
" <td>170817_030435</td>\n",
" <td>1.495586</td>\n",
" <td>3.258086</td>\n",
" <td>0.883</td>\n",
" <td>2.769752</td>\n",
" <td>-130.592351</td>\n",
" <td>-7.816724</td>\n",
" <td>117.77</td>\n",
" <td>-1.887823</td>\n",
" <td>207.21</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.484919</td>\n",
" <td>13.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>44</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>15.984125</td>\n",
" <td>24.078824</td>\n",
" <td>-29.745134</td>\n",
" <td>Moncada</td>\n",
" <td>Yoan</td>\n",
" <td>L</td>\n",
" <td>0</td>\n",
" <td>Moncada</td>\n",
" <td>660162</td>\n",
" <td>-29.4</td>\n",
" <td>10.3</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>_2_</td>\n",
" <td>73.4</td>\n",
" <td>325</td>\n",
" <td>2</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>11.729981</td>\n",
" <td>1.782464</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>Swinging Strike</td>\n",
" <td>325</td>\n",
" <td>S</td>\n",
" <td>BBSSS</td>\n",
" <td>SL</td>\n",
" <td>FF|CH|FF|SL|SL</td>\n",
" <td>False</td>\n",
" <td>1.705041</td>\n",
" <td>2.200959</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>98.640</td>\n",
" <td>2011.323</td>\n",
" <td>False</td>\n",
" <td>1__</td>\n",
" <td>80.4</td>\n",
" <td>170817_034628</td>\n",
" <td>1.413525</td>\n",
" <td>3.113286</td>\n",
" <td>0.922</td>\n",
" <td>5.388259</td>\n",
" <td>-116.618159</td>\n",
" <td>-1.313466</td>\n",
" <td>53.49</td>\n",
" <td>-2.166580</td>\n",
" <td>181.76</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.604408</td>\n",
" <td>14.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>33</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>-7.502095</td>\n",
" <td>23.611514</td>\n",
" <td>-22.336363</td>\n",
" <td>Narvaez</td>\n",
" <td>Omar</td>\n",
" <td>L</td>\n",
" <td>0</td>\n",
" <td>Narvaez</td>\n",
" <td>553882</td>\n",
" <td>15.3</td>\n",
" <td>6.1</td>\n",
" <td>23.9</td>\n",
" <td>16</td>\n",
" <td>1__</td>\n",
" <td>80.8</td>\n",
" <td>242</td>\n",
" <td>0</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>5</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>-4.609078</td>\n",
" <td>6.043999</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>Ball</td>\n",
" <td>242</td>\n",
" <td>B</td>\n",
" <td>SB</td>\n",
" <td>CH</td>\n",
" <td>FF|CH</td>\n",
" <td>False</td>\n",
" <td>0.136973</td>\n",
" <td>1.247545</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>217.328</td>\n",
" <td>1421.818</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>86.9</td>\n",
" <td>170817_032244</td>\n",
" <td>1.455984</td>\n",
" <td>3.355642</td>\n",
" <td>0.812</td>\n",
" <td>6.193619</td>\n",
" <td>-126.237878</td>\n",
" <td>-6.443126</td>\n",
" <td>110.23</td>\n",
" <td>-1.739681</td>\n",
" <td>205.18</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.608691</td>\n",
" <td>14.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ab_number away_team_id away_team_lg ax ay az \\\n",
"2 17 cha AL 13.009854 24.855924 -26.581159 \n",
"3 18 cha AL -9.324853 26.995983 -13.773599 \n",
"6 27 cha AL 8.959741 25.257839 -17.386350 \n",
"7 44 cha AL 15.984125 24.078824 -29.745134 \n",
"8 33 cha AL -7.502095 23.611514 -22.336363 \n",
"\n",
" bat_box_name bat_first_name bat_hand_cd bat_home_id bat_last_name \\\n",
"2 Rodon Carlos L 0 Rodon \n",
"3 Garcia, L Leury L 0 Garcia \n",
"6 Moncada Yoan L 0 Moncada \n",
"7 Moncada Yoan L 0 Moncada \n",
"8 Narvaez Omar L 0 Narvaez \n",
"\n",
" bat_mlbid break_angle break_length break_y day end_bases end_speed \\\n",
"2 607074 -26.6 9.3 23.8 16 1__ 72.6 \n",
"3 544725 27.7 3.7 23.8 16 ___ 87.1 \n",
"6 660162 -26.6 4.9 23.9 16 ___ 83.0 \n",
"7 660162 -29.4 10.3 23.8 16 _2_ 73.4 \n",
"8 553882 15.3 6.1 23.9 16 1__ 80.8 \n",
"\n",
" event_num event_outs_ct game_id game_type game_type_des home_team_id \\\n",
"2 117 0 491891 R Regular Season lan \n",
"3 125 2 491891 R Regular Season lan \n",
"6 186 3 491891 R Regular Season lan \n",
"7 325 2 491891 R Regular Season lan \n",
"8 242 0 491891 R Regular Season lan \n",
"\n",
" home_team_lg inning_number interleague_fl local_game_time month outs_ct \\\n",
"2 NL 3 True 19:10 8 0 \n",
"3 NL 3 True 19:10 8 0 \n",
"6 NL 4 True 19:10 8 2 \n",
"7 NL 6 True 19:10 8 1 \n",
"8 NL 5 True 19:10 8 0 \n",
"\n",
" pa_ball_ct pa_event_cd pa_strike_ct pa_terminal_fl park_id \\\n",
"2 0 20 1 False 22 \n",
"3 0 2 0 True 22 \n",
"6 0 2 0 False 22 \n",
"7 2 3 2 True 22 \n",
"8 0 14 1 False 22 \n",
"\n",
" park_location park_name pfx_x pfx_z pit_box_name \\\n",
"2 Los Angeles, CA Dodger Stadium 9.758109 4.194976 Darvish \n",
"3 Los Angeles, CA Dodger Stadium -4.883337 9.636140 Darvish \n",
"6 Los Angeles, CA Dodger Stadium 5.143431 8.489030 Darvish \n",
"7 Los Angeles, CA Dodger Stadium 11.729981 1.782464 Darvish \n",
"8 Los Angeles, CA Dodger Stadium -4.609078 6.043999 Darvish \n",
"\n",
" pit_first_name pit_hand_cd pit_last_name pit_mlbid pitch_des \\\n",
"2 Yu R Darvish 506433 Ball \n",
"3 Yu R Darvish 506433 In play, out(s) \n",
"6 Yu R Darvish 506433 Ball \n",
"7 Yu R Darvish 506433 Swinging Strike \n",
"8 Yu R Darvish 506433 Ball \n",
"\n",
" pitch_id pitch_res pitch_seq pitch_type pitch_type_seq playoff_fl \\\n",
"2 117 B SB SL FF|SL False \n",
"3 125 X X FF FF False \n",
"6 186 B B FC FC False \n",
"7 325 S BBSSS SL FF|CH|FF|SL|SL False \n",
"8 242 B SB CH FF|CH False \n",
"\n",
" px pz regseason_fl retro_game_id spin_dir spin_rate st_fl \\\n",
"2 1.060151 1.650721 True LAN201708160 113.263 1775.850 False \n",
"3 -0.073010 1.455514 True LAN201708160 206.873 2191.227 False \n",
"6 -0.148311 1.165639 True LAN201708160 148.790 1920.812 False \n",
"7 1.705041 2.200959 True LAN201708160 98.640 2011.323 False \n",
"8 0.136973 1.247545 True LAN201708160 217.328 1421.818 False \n",
"\n",
" start_bases start_speed sv_id sz_bot sz_top \\\n",
"2 ___ 79.9 170817_024531 1.670886 3.678705 \n",
"3 1__ 94.1 170817_024737 1.620381 3.346632 \n",
"6 ___ 89.9 170817_030435 1.495586 3.258086 \n",
"7 1__ 80.4 170817_034628 1.413525 3.113286 \n",
"8 ___ 86.9 170817_032244 1.455984 3.355642 \n",
"\n",
" type_confidence vx0 vy0 vz0 x x0 y \\\n",
"2 0.920 3.784012 -115.689080 -3.674961 74.33 -1.871997 194.55 \n",
"3 0.986 6.512274 -136.577354 -8.462723 119.78 -1.841785 199.48 \n",
"6 0.883 2.769752 -130.592351 -7.816724 117.77 -1.887823 207.21 \n",
"7 0.922 5.388259 -116.618159 -1.313466 53.49 -2.166580 181.76 \n",
"8 0.812 6.193619 -126.237878 -6.443126 110.23 -1.739681 205.18 \n",
"\n",
" y0 year z0 zone \n",
"2 50.0 2017 5.853417 14.0 \n",
"3 50.0 2017 5.518560 13.0 \n",
"6 50.0 2017 5.484919 13.0 \n",
"7 50.0 2017 5.604408 14.0 \n",
"8 50.0 2017 5.608691 14.0 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_darvish_vs_left.head()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1525"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 一応チェック\n",
"len(df_darvish_vs_right)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1533"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df_darvish_vs_left)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# かるーく可視化する\n",
"\n",
"打者の左右ごとに,かるーく散布図を描いてみる.\n",
"\n",
"急ごしらえなので雰囲気伝わる程度ですが :bow:\n",
"\n",
"## 対象のボールを抽出\n",
"\n",
"* 三振を奪ったボール,いわゆる **「ウイニングショット」**\n",
"* ホームランを食らったボール,いわゆる **「飛翔」**\n",
"\n",
"## 参考\n",
"\n",
"1年ちょっと前の自分がちゃんとやってたのでこちらから拝借\n",
"\n",
"[【野球Hack】PythonとJupyterで「一球速報」っぽいモノを作る(MLB編) #pyhack](http://shinyorke.hatenablog.com/entry/2016/12/11/203146)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div class=\"bk-root\">\n",
" <a href=\"http://bokeh.pydata.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
" <span id=\"26016245-675e-4127-8a56-e6aa7776301f\">Loading BokehJS ...</span>\n",
" </div>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"\n",
"(function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = true;\n",
"\n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
"\n",
"\n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 5000;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
"\n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\n\"+\n",
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
"\n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"26016245-675e-4127-8a56-e6aa7776301f\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"26016245-675e-4127-8a56-e6aa7776301f\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '26016245-675e-4127-8a56-e6aa7776301f' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
"\n",
" var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.5.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.5.min.js\"];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" Bokeh.set_log_level(\"info\");\n",
" },\n",
" \n",
" function(Bokeh) {\n",
" \n",
" },\n",
" \n",
" function(Bokeh) {\n",
" \n",
" document.getElementById(\"26016245-675e-4127-8a56-e6aa7776301f\").textContent = \"BokehJS is loading...\";\n",
"\n",
" },\n",
" function(Bokeh) {\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.5.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.5.min.css\");\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.5.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.5.min.css\");\n",
" }\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"26016245-675e-4127-8a56-e6aa7776301f\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
"\n",
" }\n",
"\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
"}(this));"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# まずは試運転がてら,ひとまず散布図に出す\n",
"\n",
"from bokeh.charts import Scatter, output_notebook, show\n",
"from bokeh.models import Range1d\n",
"output_notebook()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"e1734367-aa61-49a2-a646-6151949d94cd\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = false;\n",
"\n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
"\n",
"\n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
"\n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\n\"+\n",
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
"\n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"e1734367-aa61-49a2-a646-6151949d94cd\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"e1734367-aa61-49a2-a646-6151949d94cd\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'e1734367-aa61-49a2-a646-6151949d94cd' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
"\n",
" var js_urls = [];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"40996758-7dcc-435d-9dee-8a504a226cbe\":{\"roots\":{\"references\":[{\"attributes\":{\"callback\":null,\"end\":6,\"start\":-1},\"id\":\"89dfc568-7320-4006-b058-8a50e9d6c3cd\",\"type\":\"Range1d\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],\"x_values\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[1525]},\"y_values\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[1525]}}},\"id\":\"4cd94c70-a14c-44dd-93b3-56c8181a4c3c\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":null,\"text\":null},\"id\":\"3b0820ea-0a25-41ba-894e-5eefdf12ff79\",\"type\":\"Title\"},{\"attributes\":{\"axis_label\":\"pz\",\"formatter\":{\"id\":\"c01ca467-f65a-4c63-a8f8-25b917344315\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"248ef86d-558f-48b8-8708-bf318c14fac7\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"92ed1059-caf7-4e4a-8c86-14206ea8c2fe\",\"type\":\"BasicTicker\"}},\"id\":\"1a5c485f-7dbd-4c2f-b801-d211d1194a72\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#f22c40\"},\"line_color\":{\"value\":\"#f22c40\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"57441f01-98ae-485a-9302-5671106ab2ae\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"8b1a5b8b-7fbc-4b22-b49f-277e0fe5ec38\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"4cd94c70-a14c-44dd-93b3-56c8181a4c3c\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"57441f01-98ae-485a-9302-5671106ab2ae\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"04b3c1cf-83cf-4c9e-aaba-7ac3cb664a92\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"location\":\"top_left\",\"plot\":{\"id\":\"248ef86d-558f-48b8-8708-bf318c14fac7\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"ad68cc22-eaa5-4203-bc93-7c07b447dc42\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"c01ca467-f65a-4c63-a8f8-25b917344315\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis_label\":\"px\",\"formatter\":{\"id\":\"8b1a5b8b-7fbc-4b22-b49f-277e0fe5ec38\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"248ef86d-558f-48b8-8708-bf318c14fac7\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"fa24836e-7552-4d18-8c90-ce1d4aa47722\",\"type\":\"BasicTicker\"}},\"id\":\"c5a5c9c5-e497-49b9-9d62-34646afdce83\",\"type\":\"LinearAxis\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"3e793ad3-c207-4e49-a40d-421654e5c273\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"fa24836e-7552-4d18-8c90-ce1d4aa47722\",\"type\":\"BasicTicker\"},{\"attributes\":{\"below\":[{\"id\":\"c5a5c9c5-e497-49b9-9d62-34646afdce83\",\"type\":\"LinearAxis\"}],\"css_classes\":null,\"left\":[{\"id\":\"1a5c485f-7dbd-4c2f-b801-d211d1194a72\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"3e793ad3-c207-4e49-a40d-421654e5c273\",\"type\":\"BoxAnnotation\"},{\"id\":\"04b3c1cf-83cf-4c9e-aaba-7ac3cb664a92\",\"type\":\"GlyphRenderer\"},{\"id\":\"ad68cc22-eaa5-4203-bc93-7c07b447dc42\",\"type\":\"Legend\"},{\"id\":\"c5a5c9c5-e497-49b9-9d62-34646afdce83\",\"type\":\"LinearAxis\"},{\"id\":\"1a5c485f-7dbd-4c2f-b801-d211d1194a72\",\"type\":\"LinearAxis\"},{\"id\":\"eb9e8b9d-e701-47c5-9b52-6f18f2265a6f\",\"type\":\"Grid\"},{\"id\":\"61abcf93-3e84-481d-a99e-ad7cf0a63659\",\"type\":\"Grid\"}],\"title\":{\"id\":\"3b0820ea-0a25-41ba-894e-5eefdf12ff79\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"18eef271-504c-476e-bf97-73b0e3cfcaac\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"2ae071c6-3770-4a88-b210-26b795893214\",\"type\":\"Toolbar\"},\"x_mapper_type\":\"auto\",\"x_range\":{\"id\":\"1d5aa71b-c55d-47ca-b559-d270a757d9d7\",\"type\":\"Range1d\"},\"y_mapper_type\":\"auto\",\"y_range\":{\"id\":\"89dfc568-7320-4006-b058-8a50e9d6c3cd\",\"type\":\"Range1d\"}},\"id\":\"248ef86d-558f-48b8-8708-bf318c14fac7\",\"subtype\":\"Chart\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null,\"end\":3,\"start\":-3},\"id\":\"1d5aa71b-c55d-47ca-b559-d270a757d9d7\",\"type\":\"Range1d\"},{\"attributes\":{\"plot\":{\"id\":\"248ef86d-558f-48b8-8708-bf318c14fac7\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"5fcc45f8-64d7-4bd3-ab0b-481a1242fd91\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"18eef271-504c-476e-bf97-73b0e3cfcaac\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":{\"id\":\"248ef86d-558f-48b8-8708-bf318c14fac7\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"fa24836e-7552-4d18-8c90-ce1d4aa47722\",\"type\":\"BasicTicker\"}},\"id\":\"eb9e8b9d-e701-47c5-9b52-6f18f2265a6f\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"92ed1059-caf7-4e4a-8c86-14206ea8c2fe\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"248ef86d-558f-48b8-8708-bf318c14fac7\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"b36f90b0-60ad-4a30-bce6-cac6818996a3\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"3e793ad3-c207-4e49-a40d-421654e5c273\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"248ef86d-558f-48b8-8708-bf318c14fac7\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"286f8132-e06f-4e9b-b6d1-a85e9f63c120\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"248ef86d-558f-48b8-8708-bf318c14fac7\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"4f596c36-3e12-4823-b36b-eba2619361f2\",\"type\":\"SaveTool\"},{\"attributes\":{\"plot\":{\"id\":\"248ef86d-558f-48b8-8708-bf318c14fac7\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"9061dbc2-8fa6-475f-a1f2-d8772da5fdd6\",\"type\":\"ResetTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"5fcc45f8-64d7-4bd3-ab0b-481a1242fd91\",\"type\":\"PanTool\"},{\"id\":\"b36f90b0-60ad-4a30-bce6-cac6818996a3\",\"type\":\"WheelZoomTool\"},{\"id\":\"286f8132-e06f-4e9b-b6d1-a85e9f63c120\",\"type\":\"BoxZoomTool\"},{\"id\":\"4f596c36-3e12-4823-b36b-eba2619361f2\",\"type\":\"SaveTool\"},{\"id\":\"9061dbc2-8fa6-475f-a1f2-d8772da5fdd6\",\"type\":\"ResetTool\"},{\"id\":\"a7676df2-eab0-4668-ae1a-ca39063cec00\",\"type\":\"HelpTool\"}]},\"id\":\"2ae071c6-3770-4a88-b210-26b795893214\",\"type\":\"Toolbar\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"248ef86d-558f-48b8-8708-bf318c14fac7\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"92ed1059-caf7-4e4a-8c86-14206ea8c2fe\",\"type\":\"BasicTicker\"}},\"id\":\"61abcf93-3e84-481d-a99e-ad7cf0a63659\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"248ef86d-558f-48b8-8708-bf318c14fac7\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"a7676df2-eab0-4668-ae1a-ca39063cec00\",\"type\":\"HelpTool\"}],\"root_ids\":[\"248ef86d-558f-48b8-8708-bf318c14fac7\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.5\"}};\n",
" var render_items = [{\"docid\":\"40996758-7dcc-435d-9dee-8a504a226cbe\",\"elementid\":\"e1734367-aa61-49a2-a646-6151949d94cd\",\"modelid\":\"248ef86d-558f-48b8-8708-bf318c14fac7\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
"\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"e1734367-aa61-49a2-a646-6151949d94cd\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
"\n",
" }\n",
"\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 縦軸:pz(ホームベースからの高さ), 横軸:px(ホームベースからの距離)\n",
"\n",
"p = Scatter(df_darvish_vs_right[['px', 'pz']], plot_width=600, plot_height=600)\n",
"p.x_range=Range1d(-3, 3)\n",
"p.y_range=Range1d(-1, 6)\n",
"show(p)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"# いい感じにできたので,イベント毎に色分けをしてみる.なおイベントは下記の通り.\n",
"\n",
"class RetroSheet(object):\n",
"\n",
" EVENT_02_GENERIC_OUT_FLYBALL = ('flyout', 'fly out', 'sac fly', 'sac fly dp')\n",
" EVENT_02_GENERIC_OUT_LINEDRIVE = ('lineout', 'line out', 'bunt lineout')\n",
" EVENT_02_GENERIC_OUT_POPUP = ('pop out', 'bunt pop out')\n",
" EVENT_02_GENERIC_OUT_GROUNDBALL = ('groundout', 'ground out', 'sac bunt', 'bunt groundout', 'grounded into dp')\n",
" EVENT_02_GENERIC_OUT_OTHER = ('forceout', 'double play', 'triple play', 'sacrifice bunt d')\n",
" EVENT_03_STRIKE_OUT = ('strikeout', 'strikeout - dp')\n",
" EVENT_14_WALK = ('walk', )\n",
" EVENT_15_INTENT_WALK = ('intent walk', )\n",
" EVENT_16_HIT_BY_PITCH = ('hit by pitch', )\n",
" EVENT_19_FIELDERS_CHOICE = ('fielders choice out', 'fielders choice')\n",
" EVENT_20_SINGLE = ('single', )\n",
" EVENT_21_DOUBLE = ('double', )\n",
" EVENT_22_TRIPLE = ('triple', )\n",
" EVENT_23_HOME_RUN = ('home run', )\n",
" EVENT_CD_HITS = (20, 21, 22, 23)\n",
"\n",
" @classmethod\n",
" def event_cd(cls, event_tx, ab_des):\n",
" \"\"\"\n",
" Event Code for Retrosheet\n",
" :param event_tx: Event text\n",
" :param ab_des: at bat description\n",
" :return: event_cd(int)\n",
" \"\"\"\n",
" _event_tx = event_tx.lower()\n",
" _ab_des = ab_des.lower()\n",
" # Generic out(event_cd:2)\n",
" if _event_tx in cls.EVENT_02_GENERIC_OUT_FLYBALL:\n",
" return 2\n",
" elif _event_tx in cls.EVENT_02_GENERIC_OUT_LINEDRIVE:\n",
" return 2\n",
" elif _event_tx in cls.EVENT_02_GENERIC_OUT_POPUP:\n",
" return 2\n",
" elif _event_tx in cls.EVENT_02_GENERIC_OUT_GROUNDBALL:\n",
" return 2\n",
" elif _event_tx in cls.EVENT_02_GENERIC_OUT_OTHER:\n",
" return 2\n",
" # Strike out(event_cd:3)\n",
" elif _event_tx in cls.EVENT_03_STRIKE_OUT:\n",
" return 3\n",
" # Walk(event_cd:14)\n",
" elif _event_tx in cls.EVENT_14_WALK:\n",
" return 14\n",
" # Intent Walk(event_cd:15)\n",
" elif _event_tx in cls.EVENT_15_INTENT_WALK:\n",
" return 15\n",
" # Hit By Pitch(event_cd:16)\n",
" elif _event_tx in cls.EVENT_16_HIT_BY_PITCH:\n",
" return 16\n",
" # Interference(event_cd:17)\n",
" elif _event_tx.lower().count('interference') > 0:\n",
" return 17\n",
" # Error(event_cd:18)\n",
" elif _event_tx[-5:] == 'error':\n",
" return 18\n",
" # Fielder's choice(event_cd:19)\n",
" elif _event_tx in cls.EVENT_19_FIELDERS_CHOICE:\n",
" return 19\n",
" # Single(event_cd:20)\n",
" elif _event_tx in cls.EVENT_20_SINGLE:\n",
" return 20\n",
" # 2B(event_cd:21)\n",
" elif _event_tx in cls.EVENT_21_DOUBLE:\n",
" return 21\n",
" # 3B(event_cd:22)\n",
" elif _event_tx in cls.EVENT_22_TRIPLE:\n",
" return 22\n",
" # HR(event_cd:22)\n",
" elif _event_tx in cls.EVENT_23_HOME_RUN:\n",
" return 23\n",
" # Runner Out\n",
" elif _event_tx == 'runner out':\n",
" # Caught stealing(event_cd:6)\n",
" if _ab_des.count(\"caught stealing\") > 0:\n",
" return 6\n",
" # Picks off(event_cd:6)\n",
" elif _ab_des.count(\"picks off\") > 0:\n",
" return 8\n",
" # Unknown event(event_cd:0)\n",
" else:\n",
" return 0\n",
" # Unknown event(event_cd:0)\n",
" else:\n",
" return 0\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'\\nFA:Fastball\\nFF:4-seam Fastball\\nFT:2-seam Fastball\\nFC:Cut Fastball\\nFS:Split-finger Fastball\\nFO:Forkball\\nSI:Sinker\\nSL:Slider\\nCU:Curveball\\nKC:Knuckle Curve\\nEP:Ephuus\\nCH:Change-up\\nSC:Screwball\\nKN:Knuckleball\\nUN:Unknown\\n'"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 球種はここ\n",
"\"\"\"\n",
"FA:Fastball\n",
"FF:4-seam Fastball\n",
"FT:2-seam Fastball\n",
"FC:Cut Fastball\n",
"FS:Split-finger Fastball\n",
"FO:Forkball\n",
"SI:Sinker\n",
"SL:Slider\n",
"CU:Curveball\n",
"KC:Knuckle Curve\n",
"EP:Ephuus\n",
"CH:Change-up\n",
"SC:Screwball\n",
"KN:Knuckleball\n",
"UN:Unknown\n",
"\"\"\"\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"# 今回の対象は三振(pa_event_cd=3)と,ホームラン(pa_event_cd=23), というわけでまずは三振を奪ったウイニングショットで見てみる\n",
"\n",
"# 打席終了(pa_terminal_fl == True) かつ, pa_event_cd=3\n",
"df_darvish_vs_right_so = df_darvish_vs_right.query(\"pa_terminal_fl == True and pa_event_cd == 3\")\n",
"df_darvish_vs_left_so = df_darvish_vs_left.query(\"pa_terminal_fl == True and pa_event_cd == 3\")\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"105"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df_darvish_vs_right_so)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"104"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df_darvish_vs_left_so)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"dd671d40-ef30-4f3a-896e-403bd89fb430\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = false;\n",
"\n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
"\n",
"\n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
"\n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\n\"+\n",
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
"\n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"dd671d40-ef30-4f3a-896e-403bd89fb430\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"dd671d40-ef30-4f3a-896e-403bd89fb430\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'dd671d40-ef30-4f3a-896e-403bd89fb430' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
"\n",
" var js_urls = [];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"2559aafc-a496-4dc1-8e5f-82682fe81af1\":{\"roots\":{\"references\":[{\"attributes\":{\"axis_label\":\"\\u30db\\u30fc\\u30e0\\u30d9\\u30fc\\u30b9\\u304b\\u3089\\u306e\\u9ad8\\u3055. \\u30b9\\u30c8\\u30e9\\u30a4\\u30af\\u30be\\u30fc\\u30f3\\u306e\\u9ad8\\u4f4e\\u306f\\u6253\\u8005\\u306b\\u3088\\u308a\\u7570\\u306a\\u308b(\\u30eb\\u30fc\\u30eb\\u4e0a)\",\"formatter\":{\"id\":\"0c910cf0-fd9f-4445-987d-b74a3f473f72\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"46e5cc57-348c-483b-b106-82903b9d698f\",\"type\":\"BasicTicker\"}},\"id\":\"28c2dd56-3195-458e-a091-d02caf3a8a0c\",\"type\":\"LinearAxis\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"6b7d75c7-26ea-4ac8-b04e-18764d5d0edd\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"ecee0135-de0a-45d9-99a5-7a7719599c13\",\"type\":\"PanTool\"},{\"id\":\"eab7b239-e1e2-420a-9265-68c742dedc00\",\"type\":\"WheelZoomTool\"},{\"id\":\"3ed5d2f9-25bc-404d-9d29-e7d00dc89dbb\",\"type\":\"BoxZoomTool\"},{\"id\":\"8675c795-2152-48c4-aeeb-e21491ab4966\",\"type\":\"SaveTool\"},{\"id\":\"d632992f-c3e3-4b4d-ab40-2d9b5d8a9d7f\",\"type\":\"ResetTool\"},{\"id\":\"c5c4af32-0e53-49ed-9676-37cc88e4a429\",\"type\":\"HelpTool\"}]},\"id\":\"08de7f26-7d8a-45c4-a0ee-356991f960fd\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"46e5cc57-348c-483b-b106-82903b9d698f\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"}],\"pitch_type\":[\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\"],\"x_values\":{\"__ndarray__\":\"moLTM6MR8D86wZKR4UnEP038xxzMpMK/04GIE2Pj4T8aktCBXp7mP8fsxy3you4/LkVDQ9zQ8z/3MblffmjiPxsSjWbxeqy/PD+quOWO4j93S66y9pnTPx3SbbzE7+A/816u2GXi5z9k61gH4IPQP0g6TKINiOA/mPd5cPeTtj/t3yQNSIf0P0tMCEXIjMo/mN8DSAeh6r8cIzwacHTuP35rmGt4NtO/z3+6ElxMzb9d1xYs/T3EPwsbvWoDIvQ/DVrBJZBJ7j9PTijjfHv8P0ubnQobmdE/xIRlOs74uD+OXrgniI70P2DUydbvmtI/\",\"dtype\":\"float64\",\"shape\":[30]},\"y_values\":{\"__ndarray__\":\"sR7Hu1CQAEBX+iEmUiAKQHM9O3gNtwdAxObhZeG8+z+ZPBO3PE7wP5qbeIbZiQBAdiBnRhryAEDAqsn9X68FQOZf9waRMQNAOMkqPrm06j+1we0VGH0BQPoDgkmtHgJAo5WeQixI9T9xPyBAJkT+Pxzq4YPQ2fg/SP/HjG9ZB0Dx2ihPxRn5P7lJzrz4EPs/UNwnIDDyBUAD3XGY+WT5PyLdgMs8HgBAmX1rY+9aCED/XyR2Km/0P/4HJTow/gVATbsdr9KjAkBiJS1NXSz1P7cuzd1WuglAcEaFoQ2AA0B8efvBzyL+Pwlz8kWMoP0/\",\"dtype\":\"float64\",\"shape\":[30]}}},\"id\":\"44d9606c-8467-4bdd-9ff5-4a87ff132e52\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"overlay\":{\"id\":\"6b7d75c7-26ea-4ac8-b04e-18764d5d0edd\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"3ed5d2f9-25bc-404d-9d29-e7d00dc89dbb\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"callback\":null,\"end\":6,\"start\":-1},\"id\":\"8a6ece63-6520-4fb3-9b0b-3973344f31db\",\"type\":\"Range1d\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#5ab738\"},\"line_color\":{\"value\":\"#5ab738\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"0db61f17-9219-4e60-9d9b-4bc59e08d308\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"3a524da3-c55f-4f2c-90b3-847c2064df5f\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"8675c795-2152-48c4-aeeb-e21491ab4966\",\"type\":\"SaveTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#f22c40\"},\"line_color\":{\"value\":\"#f22c40\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"ee299b5f-801e-410d-902a-ee6d6997094f\",\"type\":\"Circle\"},{\"attributes\":{\"plot\":{\"id\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"d632992f-c3e3-4b4d-ab40-2d9b5d8a9d7f\",\"type\":\"ResetTool\"},{\"attributes\":{\"plot\":{\"id\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"c5c4af32-0e53-49ed-9676-37cc88e4a429\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"a5e4be9d-7271-400b-b9fc-0ff5e74b967d\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"7373f2a6-d3fc-4164-b5c2-e1b9b316be3d\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"cee991e9-bee0-47da-9481-c4424073310f\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"63d8d634-d813-426c-8580-184585208d16\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"cafba3eb-e84c-4eae-bf0c-7c22b246d99d\",\"type\":\"ToolEvents\"},{\"attributes\":{\"items\":[{\"id\":\"625f0757-8771-4196-8bb7-8d43c6ae39d7\",\"type\":\"LegendItem\"},{\"id\":\"22ec024e-ad97-4a2c-b0be-0766b1976d7f\",\"type\":\"LegendItem\"},{\"id\":\"20166d3c-b5bd-49be-a915-f8242219abe7\",\"type\":\"LegendItem\"},{\"id\":\"75c516fd-2af4-4565-8bc2-33d8b79e4700\",\"type\":\"LegendItem\"},{\"id\":\"f239da83-bf22-45d0-907e-efc2af3784b0\",\"type\":\"LegendItem\"}],\"location\":\"top_left\",\"plot\":{\"id\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"e0bd1020-8b82-4072-b0d2-68be55c056f3\",\"type\":\"Legend\"},{\"attributes\":{\"plot\":null,\"text\":null},\"id\":\"99f654d4-639e-43d2-b718-4d788be563ba\",\"type\":\"Title\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#407ee7\"},\"line_color\":{\"value\":\"#407ee7\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"cee991e9-bee0-47da-9481-c4424073310f\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"}],\"pitch_type\":[\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\"],\"x_values\":{\"__ndarray__\":\"KY6tK+CR1r8BREY64Crfv1deifdO1pi/HhDRpx7YtL9LH2f5ekjJvxlrh3DUKdC/QclFbWF3xT+ez2uUTXbLv4d68/r+OuE/\",\"dtype\":\"float64\",\"shape\":[9]},\"y_values\":{\"__ndarray__\":\"Ks4fhjrtBkAW64QsViEHQCLztoHQ+fg/AfOwKFge7D9jtZdb2+zlP0ihAyBM/AJAbLfolUKd5z+t/ZdtRsYFQFFyhfh0D/Q/\",\"dtype\":\"float64\",\"shape\":[9]}}},\"id\":\"26edbd7f-8d39-4986-b1e1-83ae6e22c6da\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"}],\"pitch_type\":[\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\"],\"x_values\":{\"__ndarray__\":\"HRjKOFJsuj80AneNQJjFP8cuhe0RJfm/jcvwSu5Z1z95I5JOxcPjv7tny/qPddI/0aTCgsK94D8EA4odU6jXv9nob4Ux2OI/IK6H9IKo5T/o1gO1ckzuP2w1C5iHduK/17h3RuhQyr8ZhNpF27/kv7GA57f/7sw/MV7YhyJp1b/wFLX0AfLVP4piFgVgkfI/bakgVqiV4z9XVAFydvLbP6cwIVeDVd0/wVHIxEOi2r+2gNiPV9jwv1Gd0Wiyy9u/E7QIQuP0pr9ntajaDlnWv7/1OwGYL+Q/zv8JnvMM4b8eiFHFn2bjP9saJM8CEtS/fmRn4HDjzr/GJHnbC5/pPxE0ufc8S+c/VduTvCAay79lEfweejToP8VtlyWZhum/pNfMAqAp5b9BPdTfcMLqP/ukBAz9U94/j9teTnIW6b87+Wwxs+S2vzsVKsYEat2/QUj247sn0z/t8tQ4JNXhv9QjjFgqc9u/dV+IqJLW5T+hjGTt8SXSv5FoHjyzv+W/3weFt3m94j+6JInX4j/iv/vtoO6b0eu/DeVR+yzuwr94iqgLcaz4P3ODZgo6jeI/\",\"dtype\":\"float64\",\"shape\":[54]},\"y_values\":{\"__ndarray__\":\"ut+N28XQCkA+kSkRKWAGQAMGra/KSw5AyOl4+ts0BUC1Pre0i84HQEb1GpQx2Pw/GgXNHGpP+T/Lg1iBob78P/RfbePDrP8/KgLpgszIAkDKfEouzwMAQE5qeyoqAAJAuaGwcla9DkAh8ayLoC8RQBomJ0xsYgBACgZPhWRiD0BozfIjwIEEQL3n795tTQhAMnOja+LU+z/U51nURhH6P/dEs1lyygNATEV8cvw+DEDKXMEMt2ACQLP6A3CSCQ1Ane64PuvNAECLAwRR06MEQN5znb8PMPs/gWor8bOrBkCtUe6RVJQCQOlcviDSgA1AI3pw2ukvAkCoIGLo0w4EQDIcC/wPYgdAkWdmEgvv9z/qZx73BTD9P+F2+dMJDQdA94eQt7YWDECrehBX634MQMTdOOFONPo/ebCKiSZgDEBeKR5OIkkEQElfFTmR/xBAoqEnXvXK9z9krweQ0SYRQEfM/J7GGAxAwzCfxq6w+D8ph5awvicMQAQE2hy2lg1ADcpX0/kmAUA6NIIGC2YDQAPd6nKuagZAGA6QTFL0BkDKw62TiwABQLKzawe/HgpA\",\"dtype\":\"float64\",\"shape\":[54]}}},\"id\":\"7373f2a6-d3fc-4164-b5c2-e1b9b316be3d\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"SL\"},\"renderers\":[{\"id\":\"99386040-6c73-46dd-b754-a7e73aa993f5\",\"type\":\"GlyphRenderer\"}]},\"id\":\"20166d3c-b5bd-49be-a915-f8242219abe7\",\"type\":\"LegendItem\"},{\"attributes\":{\"data_source\":{\"id\":\"26edbd7f-8d39-4986-b1e1-83ae6e22c6da\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"ee299b5f-801e-410d-902a-ee6d6997094f\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"f9aafe8f-5c22-452c-9364-1a67ff8c1c7a\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"FF\"},\"renderers\":[{\"id\":\"63d8d634-d813-426c-8580-184585208d16\",\"type\":\"GlyphRenderer\"}]},\"id\":\"22ec024e-ad97-4a2c-b0be-0766b1976d7f\",\"type\":\"LegendItem\"},{\"attributes\":{\"data_source\":{\"id\":\"b72378c7-4092-46bd-9a7b-8c459a3f62e4\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"0db61f17-9219-4e60-9d9b-4bc59e08d308\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"a5ee35f4-8b00-4593-87e7-aa6ff9e84224\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"FC\"},\"renderers\":[{\"id\":\"a5ee35f4-8b00-4593-87e7-aa6ff9e84224\",\"type\":\"GlyphRenderer\"}]},\"id\":\"f239da83-bf22-45d0-907e-efc2af3784b0\",\"type\":\"LegendItem\"},{\"attributes\":{\"label\":{\"value\":\"FT\"},\"renderers\":[{\"id\":\"afccc44d-123f-4925-9182-8d66619215cc\",\"type\":\"GlyphRenderer\"}]},\"id\":\"75c516fd-2af4-4565-8bc2-33d8b79e4700\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"FT\"},{\"pitch_type\":\"FT\"},{\"pitch_type\":\"FT\"},{\"pitch_type\":\"FT\"},{\"pitch_type\":\"FT\"},{\"pitch_type\":\"FT\"}],\"pitch_type\":[\"FT\",\"FT\",\"FT\",\"FT\",\"FT\",\"FT\"],\"x_values\":{\"__ndarray__\":\"5Gv+erIY17+x9oS+Tq/kv7Q6R9yhi/O/mKV72HVBrb8Q82ionivkPzM7zsyrzuG/\",\"dtype\":\"float64\",\"shape\":[6]},\"y_values\":{\"__ndarray__\":\"3sA+ulAGA0BrHdAu/foJQFkG7lc3cwZA710c/ajWAkBOUu9qHkj8P9hfpfawJhBA\",\"dtype\":\"float64\",\"shape\":[6]}}},\"id\":\"e314ddd1-fa2d-48a2-bb7e-305e3653e5ff\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"0c910cf0-fd9f-4445-987d-b74a3f473f72\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"ecee0135-de0a-45d9-99a5-7a7719599c13\",\"type\":\"PanTool\"},{\"attributes\":{\"below\":[{\"id\":\"c36887d9-1132-4891-8ad1-7287c4abfd48\",\"type\":\"LinearAxis\"}],\"css_classes\":null,\"left\":[{\"id\":\"28c2dd56-3195-458e-a091-d02caf3a8a0c\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"6b7d75c7-26ea-4ac8-b04e-18764d5d0edd\",\"type\":\"BoxAnnotation\"},{\"id\":\"f9aafe8f-5c22-452c-9364-1a67ff8c1c7a\",\"type\":\"GlyphRenderer\"},{\"id\":\"63d8d634-d813-426c-8580-184585208d16\",\"type\":\"GlyphRenderer\"},{\"id\":\"99386040-6c73-46dd-b754-a7e73aa993f5\",\"type\":\"GlyphRenderer\"},{\"id\":\"afccc44d-123f-4925-9182-8d66619215cc\",\"type\":\"GlyphRenderer\"},{\"id\":\"a5ee35f4-8b00-4593-87e7-aa6ff9e84224\",\"type\":\"GlyphRenderer\"},{\"id\":\"e0bd1020-8b82-4072-b0d2-68be55c056f3\",\"type\":\"Legend\"},{\"id\":\"c36887d9-1132-4891-8ad1-7287c4abfd48\",\"type\":\"LinearAxis\"},{\"id\":\"28c2dd56-3195-458e-a091-d02caf3a8a0c\",\"type\":\"LinearAxis\"},{\"id\":\"56d6e82c-48ab-4e8b-9833-39c31b962370\",\"type\":\"Grid\"},{\"id\":\"34053a79-1ebe-4cca-96c7-45e7ca028360\",\"type\":\"Grid\"}],\"title\":{\"id\":\"99f654d4-639e-43d2-b718-4d788be563ba\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"cafba3eb-e84c-4eae-bf0c-7c22b246d99d\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"08de7f26-7d8a-45c4-a0ee-356991f960fd\",\"type\":\"Toolbar\"},\"x_mapper_type\":\"auto\",\"x_range\":{\"id\":\"6aad8ad5-a7be-4e9d-bbdd-c06ad8e4078f\",\"type\":\"Range1d\"},\"y_mapper_type\":\"auto\",\"y_range\":{\"id\":\"8a6ece63-6520-4fb3-9b0b-3973344f31db\",\"type\":\"Range1d\"}},\"id\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\",\"subtype\":\"Chart\",\"type\":\"Plot\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#df5320\"},\"line_color\":{\"value\":\"#df5320\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"353ae952-c21c-4df8-b66d-87b1eff471f0\",\"type\":\"Circle\"},{\"attributes\":{\"plot\":{\"id\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"3a524da3-c55f-4f2c-90b3-847c2064df5f\",\"type\":\"BasicTicker\"}},\"id\":\"56d6e82c-48ab-4e8b-9833-39c31b962370\",\"type\":\"Grid\"},{\"attributes\":{\"data_source\":{\"id\":\"e314ddd1-fa2d-48a2-bb7e-305e3653e5ff\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"353ae952-c21c-4df8-b66d-87b1eff471f0\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"afccc44d-123f-4925-9182-8d66619215cc\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis_label\":\"\\u30db\\u30fc\\u30e0\\u30d9\\u30fc\\u30b9\\u304b\\u3089\\u306e\\u8ddd\\u96e2. -0.8\\u301c0.8\\u304c\\u30b9\\u30c8\\u30e9\\u30a4\\u30af\\u30be\\u30fc\\u30f3(\\u30de\\u30a4\\u30ca\\u30b9\\u5074\\uff1a\\u53f3\\u6253\\u8005,\\u30d7\\u30e9\\u30b9\\u5074\\uff1a\\u5de6\\u6253\\u8005)\",\"formatter\":{\"id\":\"a5e4be9d-7271-400b-b9fc-0ff5e74b967d\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"3a524da3-c55f-4f2c-90b3-847c2064df5f\",\"type\":\"BasicTicker\"}},\"id\":\"c36887d9-1132-4891-8ad1-7287c4abfd48\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"}],\"pitch_type\":[\"FC\",\"FC\",\"FC\",\"FC\",\"FC\",\"FC\"],\"x_values\":{\"__ndarray__\":\"Z/7BPCHZzj9TyNsqgfi4v5Sw6yx1fuk/9urLf9Jw67/IVE33MOXQP58xoCbJNO8/\",\"dtype\":\"float64\",\"shape\":[6]},\"y_values\":{\"__ndarray__\":\"rrzFe7119T/WV0woDhH+P1Z7xKkm4gFAC6iWId1rA0CN/PPuSfL+P8j2qc7RMNE/\",\"dtype\":\"float64\",\"shape\":[6]}}},\"id\":\"b72378c7-4092-46bd-9a7b-8c459a3f62e4\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"end\":3,\"start\":-3},\"id\":\"6aad8ad5-a7be-4e9d-bbdd-c06ad8e4078f\",\"type\":\"Range1d\"},{\"attributes\":{\"label\":{\"value\":\"CU\"},\"renderers\":[{\"id\":\"f9aafe8f-5c22-452c-9364-1a67ff8c1c7a\",\"type\":\"GlyphRenderer\"}]},\"id\":\"625f0757-8771-4196-8bb7-8d43c6ae39d7\",\"type\":\"LegendItem\"},{\"attributes\":{\"plot\":{\"id\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"eab7b239-e1e2-420a-9265-68c742dedc00\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data_source\":{\"id\":\"44d9606c-8467-4bdd-9ff5-4a87ff132e52\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"95e91217-c17e-41b1-96f6-dd6af2c1f129\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"99386040-6c73-46dd-b754-a7e73aa993f5\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#00ad9c\"},\"line_color\":{\"value\":\"#00ad9c\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"95e91217-c17e-41b1-96f6-dd6af2c1f129\",\"type\":\"Circle\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"46e5cc57-348c-483b-b106-82903b9d698f\",\"type\":\"BasicTicker\"}},\"id\":\"34053a79-1ebe-4cca-96c7-45e7ca028360\",\"type\":\"Grid\"}],\"root_ids\":[\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.5\"}};\n",
" var render_items = [{\"docid\":\"2559aafc-a496-4dc1-8e5f-82682fe81af1\",\"elementid\":\"dd671d40-ef30-4f3a-896e-403bd89fb430\",\"modelid\":\"56f9cae2-5ed7-426d-9a26-5eea9fffd2ec\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
"\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"dd671d40-ef30-4f3a-896e-403bd89fb430\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
"\n",
" }\n",
"\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 今年の三振数が209なので正解,これを右と左それぞれでプロット(&球種ごとに色分け)\n",
"\n",
"# 'ダルビッシュ有さんの右打者対戦履歴〜2017'\n",
"\n",
"p = Scatter(\n",
" df_darvish_vs_right_so,\n",
" x='px',\n",
" y='pz',\n",
" color='pitch_type',\n",
" plot_width=600, \n",
" plot_height=600\n",
")\n",
"\n",
"p.x_range=Range1d(-3, 3)\n",
"p.y_range=Range1d(-1, 6)\n",
"p.xaxis.axis_label = 'ホームベースからの距離. -0.8〜0.8がストライクゾーン(マイナス側:右打者,プラス側:左打者)'\n",
"p.yaxis.axis_label = 'ホームベースからの高さ. ストライクゾーンの高低は打者により異なる(ルール上)'\n",
"show(p)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"2cc361fd-c46d-40db-9281-adaac7887581\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = false;\n",
"\n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
"\n",
"\n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
"\n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\n\"+\n",
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
"\n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"2cc361fd-c46d-40db-9281-adaac7887581\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"2cc361fd-c46d-40db-9281-adaac7887581\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '2cc361fd-c46d-40db-9281-adaac7887581' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
"\n",
" var js_urls = [];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"972d4451-b767-4ef6-b680-18b6b762e8fa\":{\"roots\":{\"references\":[{\"attributes\":{\"label\":{\"value\":\"CH\"},\"renderers\":[{\"id\":\"f0b44638-6c13-4877-897b-61c335f832ff\",\"type\":\"GlyphRenderer\"}]},\"id\":\"1cd1b0d4-b0a2-4103-a8b1-39f659fc3458\",\"type\":\"LegendItem\"},{\"attributes\":{\"plot\":{\"id\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"3b712bd9-701f-4932-af92-be1907f7cedb\",\"type\":\"ResetTool\"},{\"attributes\":{\"plot\":{\"id\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"d4e2eb05-0a85-4e51-87e3-818466fd4ce0\",\"type\":\"HelpTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"},{\"pitch_type\":\"CU\"}],\"pitch_type\":[\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\",\"CU\"],\"x_values\":{\"__ndarray__\":\"rNY4XnH+67/htBNogq/pv12oXkr/lde/XGndS1LT0z83KgcxPLrQPwS6vUDJvIs/8gVqvIJP8L85yyM13LTEv2RUi4sIldS/6UlVYMg9ob9g3icccBKkPxYf6j5yP8C/5uYxd8mNwL/mmYJHHUjeP5Ydh6bZjc4/edOZqEq1yL+dAIUTG0/Qv+Sc2+31Qt0/bQ7EepRw4D8Z9TO7aMK5Pw==\",\"dtype\":\"float64\",\"shape\":[20]},\"y_values\":{\"__ndarray__\":\"C15vv+4XAkB2Mpw+t5PbP4IktXxvCP0/vXX5edwMBECqRirdTMvxPwYaUP9h1vA/VvIaaoYtA0CinoE7lJ31Pwd3R5qe8/I/XFnxgQuR/z9hhAQ0rObzP432hklz5/w/Xn6GA9wi9z9bQIKU38UFQGrLWY+DBQBALNP97v2bBUCrfCvjH7PzPyllOjOmMP8/3WpsFKlC8D+EpbAsiFXwPw==\",\"dtype\":\"float64\",\"shape\":[20]}}},\"id\":\"fbc6f64d-a6ab-43f9-bd49-c38818193915\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"SL\"},\"renderers\":[{\"id\":\"cbe6eccb-3fd2-4fb9-bb60-3119ed74d8b7\",\"type\":\"GlyphRenderer\"}]},\"id\":\"4493f482-8822-44a0-8f77-ff38e5282bbe\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"end\":3,\"start\":-3},\"id\":\"87230311-36aa-4940-aa34-b0e5f8c60a9d\",\"type\":\"Range1d\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"ad438996-68c6-4950-a33c-c7eb641848e5\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":{\"id\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"ba14d6f1-1679-4285-ad18-c80a9ed00b5e\",\"type\":\"PanTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#00ad9c\"},\"line_color\":{\"value\":\"#00ad9c\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"6977d88c-01a7-4f24-bf4e-209f819834a7\",\"type\":\"Circle\"},{\"attributes\":{\"axis_label\":\"\\u30db\\u30fc\\u30e0\\u30d9\\u30fc\\u30b9\\u304b\\u3089\\u306e\\u9ad8\\u3055. \\u30b9\\u30c8\\u30e9\\u30a4\\u30af\\u30be\\u30fc\\u30f3\\u306e\\u9ad8\\u4f4e\\u306f\\u6253\\u8005\\u306b\\u3088\\u308a\\u7570\\u306a\\u308b(\\u30eb\\u30fc\\u30eb\\u4e0a)\",\"formatter\":{\"id\":\"ef133a4e-16d3-4bd5-af73-6a611ff4b29e\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"af6e704a-a008-4a55-82c9-0c9c0e80365e\",\"type\":\"BasicTicker\"}},\"id\":\"0faa6191-820f-4d07-b12d-7022c84d9ebe\",\"type\":\"LinearAxis\"},{\"attributes\":{\"label\":{\"value\":\"FT\"},\"renderers\":[{\"id\":\"79bdd758-5dca-4385-9ef7-f9a0ebf716bc\",\"type\":\"GlyphRenderer\"}]},\"id\":\"4f1a85b0-b397-416e-bc74-947fae73fb9b\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"ef133a4e-16d3-4bd5-af73-6a611ff4b29e\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"CU\"},\"renderers\":[{\"id\":\"50814473-8251-4bd7-a45d-c9bb21e51193\",\"type\":\"GlyphRenderer\"}]},\"id\":\"78ea777c-c450-4d8d-bbb7-4a241797df14\",\"type\":\"LegendItem\"},{\"attributes\":{\"plot\":{\"id\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"98d4ec21-2cc3-4537-af2c-8007f76f2fa7\",\"type\":\"BasicTicker\"}},\"id\":\"1ec03a22-dfe6-4620-b1e8-f391b84e8ed0\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"}],\"pitch_type\":[\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\"],\"x_values\":{\"__ndarray__\":\"fqKWG5mey78mIIWG0M3lv0Uy1OAOe9O/6vcmhkwQ679Vgsl32zbtv4dFFkl2zui/Wt12UfC817/GbgTFfYXdv6QM/ydri+o/NSiRuOyWqz9pYoU7nYXtv0Toagykt/G/gXbY0wN8xj+YmtxdA77iPwk25N7mA90/Cp7pxshG8D/6ZDN9gwfQv+qhWQl0H9+/4AVWreOZ5L8bRN4IZZzhvwUaKN+OO+K/XF7eEVXf0z8ZVHkBZBfWvztkwxejyt8/tUHDaJpp4b9oaK0zVcXev5ez38gupNm/XzvKQdHn8b82aWRJWe3Sv7jltF70f+W/OYy7x9Of87+69cOTvaLnP120JcsPlPO/\",\"dtype\":\"float64\",\"shape\":[33]},\"y_values\":{\"__ndarray__\":\"tH1GClBIAUCCBaqzAfwEQII3UOh+FAhAa3zk2PpyA0B90b67HrEHQBWgAp78JQJA8XjZHOh/BkD0n0UbcE0GQBXvrpnWhPs/yzU7upgh/T8zgkWnJUT9PwzXaAztCglAmHly7Jyy9z+Vmo09Z6kFQObsfaUSqQdA0tDCOLo3/D/UuriPoPcAQM0ILtnstw9A9QL5ZWYGAUBMbKXutQMTQJ3oUNtRiQlAa5WCbfCy+j9IOcHpVIUIQJYFaLy+NQdAF4xzbhhZDUAJcZfH730BQEXVkru6Hfo/hzLTomuZCkCei3a/nZcBQNGUmTnEOg9Aw3/v/3hvDUAoRH+fgDQBQO0M5+JynAZA\",\"dtype\":\"float64\",\"shape\":[33]}}},\"id\":\"2003ecf4-23fe-4dd7-831a-629dafa9a711\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"5957007d-94ca-4fd6-a2fe-16b06b3b8e3a\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"items\":[{\"id\":\"4493f482-8822-44a0-8f77-ff38e5282bbe\",\"type\":\"LegendItem\"},{\"id\":\"0b21b75e-1068-411b-a811-98bf753ccf9b\",\"type\":\"LegendItem\"},{\"id\":\"33c877a1-e2c7-43ba-9da0-c23f02c99583\",\"type\":\"LegendItem\"},{\"id\":\"78ea777c-c450-4d8d-bbb7-4a241797df14\",\"type\":\"LegendItem\"},{\"id\":\"1cd1b0d4-b0a2-4103-a8b1-39f659fc3458\",\"type\":\"LegendItem\"},{\"id\":\"4f1a85b0-b397-416e-bc74-947fae73fb9b\",\"type\":\"LegendItem\"}],\"location\":\"top_left\",\"plot\":{\"id\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"6b908f32-2d97-48a0-9547-a3ba36df2180\",\"type\":\"Legend\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"}],\"pitch_type\":[\"FC\",\"FC\",\"FC\",\"FC\",\"FC\",\"FC\",\"FC\",\"FC\",\"FC\",\"FC\"],\"x_values\":{\"__ndarray__\":\"FnZ6bF4R+z++3fRJxmTiP47b0Yse4KW/J572tu5W6j89i6ngZDLhPy0B68oQx3a/deOohBx08T9N7gqjMtXSv2mNiwDmHMm/vGpJQY5V5T8=\",\"dtype\":\"float64\",\"shape\":[10]},\"y_values\":{\"__ndarray__\":\"/Vru6WS+9z+SsdU/E8n6Pxx/9M1Fb/k/qPJ9vPmsyj9bHSUpdC4IQIVAjyY+v/k/mP3KYjgl9T/CbjBQ7SbwP2VbNUQUyQJASjaE5pC2+T8=\",\"dtype\":\"float64\",\"shape\":[10]}}},\"id\":\"fb507352-f966-4e79-9dc0-3c8d7f653297\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"overlay\":{\"id\":\"ad438996-68c6-4950-a33c-c7eb641848e5\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"f4aee768-8caa-4de3-9d23-dcf03337c111\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#407ee7\"},\"line_color\":{\"value\":\"#407ee7\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"750da11f-c502-4f67-b9b4-58c3ad0c47b8\",\"type\":\"Circle\"},{\"attributes\":{\"plot\":{\"id\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"548dda6e-b2d4-4d8b-bd9c-4788a2223435\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"98d4ec21-2cc3-4537-af2c-8007f76f2fa7\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"2003ecf4-23fe-4dd7-831a-629dafa9a711\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"fef60b93-5d5f-4a21-b7f3-3c09d16ecf13\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"5668f15c-2851-45e5-a03d-5ee912acbe30\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"af6e704a-a008-4a55-82c9-0c9c0e80365e\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#df5320\"},\"line_color\":{\"value\":\"#df5320\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"fef60b93-5d5f-4a21-b7f3-3c09d16ecf13\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#5ab738\"},\"line_color\":{\"value\":\"#5ab738\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"c66c0af3-15f1-4157-a20a-edfcf052e227\",\"type\":\"Circle\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"af6e704a-a008-4a55-82c9-0c9c0e80365e\",\"type\":\"BasicTicker\"}},\"id\":\"c1928f6d-7079-4802-ac83-1edd2187989d\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"\\u30db\\u30fc\\u30e0\\u30d9\\u30fc\\u30b9\\u304b\\u3089\\u306e\\u8ddd\\u96e2. -0.8\\u301c0.8\\u304c\\u30b9\\u30c8\\u30e9\\u30a4\\u30af\\u30be\\u30fc\\u30f3(\\u30de\\u30a4\\u30ca\\u30b9\\u5074\\uff1a\\u53f3\\u6253\\u8005,\\u30d7\\u30e9\\u30b9\\u5074\\uff1a\\u5de6\\u6253\\u8005)\",\"formatter\":{\"id\":\"fd9c459e-4e94-4488-a3ed-38f28170fa9d\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"98d4ec21-2cc3-4537-af2c-8007f76f2fa7\",\"type\":\"BasicTicker\"}},\"id\":\"6735c444-105c-452b-9081-825c0909073c\",\"type\":\"LinearAxis\"},{\"attributes\":{\"below\":[{\"id\":\"6735c444-105c-452b-9081-825c0909073c\",\"type\":\"LinearAxis\"}],\"css_classes\":null,\"left\":[{\"id\":\"0faa6191-820f-4d07-b12d-7022c84d9ebe\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"ad438996-68c6-4950-a33c-c7eb641848e5\",\"type\":\"BoxAnnotation\"},{\"id\":\"cbe6eccb-3fd2-4fb9-bb60-3119ed74d8b7\",\"type\":\"GlyphRenderer\"},{\"id\":\"5668f15c-2851-45e5-a03d-5ee912acbe30\",\"type\":\"GlyphRenderer\"},{\"id\":\"e7c650ff-8038-4fce-bdcd-e78591939655\",\"type\":\"GlyphRenderer\"},{\"id\":\"50814473-8251-4bd7-a45d-c9bb21e51193\",\"type\":\"GlyphRenderer\"},{\"id\":\"f0b44638-6c13-4877-897b-61c335f832ff\",\"type\":\"GlyphRenderer\"},{\"id\":\"79bdd758-5dca-4385-9ef7-f9a0ebf716bc\",\"type\":\"GlyphRenderer\"},{\"id\":\"6b908f32-2d97-48a0-9547-a3ba36df2180\",\"type\":\"Legend\"},{\"id\":\"6735c444-105c-452b-9081-825c0909073c\",\"type\":\"LinearAxis\"},{\"id\":\"0faa6191-820f-4d07-b12d-7022c84d9ebe\",\"type\":\"LinearAxis\"},{\"id\":\"1ec03a22-dfe6-4620-b1e8-f391b84e8ed0\",\"type\":\"Grid\"},{\"id\":\"c1928f6d-7079-4802-ac83-1edd2187989d\",\"type\":\"Grid\"}],\"title\":{\"id\":\"77a51556-f8ed-4680-b4f7-d2ef0c80981e\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"ba283ae0-c3bf-401a-9771-44dd40a0178a\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"f920ed53-2096-470f-b44e-9186b532cd0e\",\"type\":\"Toolbar\"},\"x_mapper_type\":\"auto\",\"x_range\":{\"id\":\"87230311-36aa-4940-aa34-b0e5f8c60a9d\",\"type\":\"Range1d\"},\"y_mapper_type\":\"auto\",\"y_range\":{\"id\":\"899f042a-d187-4d0f-92fb-cf7c6691e658\",\"type\":\"Range1d\"}},\"id\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\",\"subtype\":\"Chart\",\"type\":\"Plot\"},{\"attributes\":{\"data_source\":{\"id\":\"c32c2332-2b74-4e4a-af8a-44f8dd5aca19\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"6977d88c-01a7-4f24-bf4e-209f819834a7\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"79bdd758-5dca-4385-9ef7-f9a0ebf716bc\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"ba14d6f1-1679-4285-ad18-c80a9ed00b5e\",\"type\":\"PanTool\"},{\"id\":\"5957007d-94ca-4fd6-a2fe-16b06b3b8e3a\",\"type\":\"WheelZoomTool\"},{\"id\":\"f4aee768-8caa-4de3-9d23-dcf03337c111\",\"type\":\"BoxZoomTool\"},{\"id\":\"548dda6e-b2d4-4d8b-bd9c-4788a2223435\",\"type\":\"SaveTool\"},{\"id\":\"3b712bd9-701f-4932-af92-be1907f7cedb\",\"type\":\"ResetTool\"},{\"id\":\"d4e2eb05-0a85-4e51-87e3-818466fd4ce0\",\"type\":\"HelpTool\"}]},\"id\":\"f920ed53-2096-470f-b44e-9186b532cd0e\",\"type\":\"Toolbar\"},{\"attributes\":{\"data_source\":{\"id\":\"fbc6f64d-a6ab-43f9-bd49-c38818193915\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"c66c0af3-15f1-4157-a20a-edfcf052e227\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"50814473-8251-4bd7-a45d-c9bb21e51193\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"4468a43d-41e5-4633-9bcd-9a03b9e76775\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"c0d0b0a2-0318-4b4c-bc77-1287dd2de541\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"f0b44638-6c13-4877-897b-61c335f832ff\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"ba283ae0-c3bf-401a-9771-44dd40a0178a\",\"type\":\"ToolEvents\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#c33ff3\"},\"line_color\":{\"value\":\"#c33ff3\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"658b74ca-f624-4fb7-a0bc-492b8734a0ec\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"CH\"}],\"pitch_type\":[\"CH\"],\"x_values\":{\"__ndarray__\":\"nxMyYBl8678=\",\"dtype\":\"float64\",\"shape\":[1]},\"y_values\":{\"__ndarray__\":\"4f9RXYVyA0A=\",\"dtype\":\"float64\",\"shape\":[1]}}},\"id\":\"4468a43d-41e5-4633-9bcd-9a03b9e76775\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"fd9c459e-4e94-4488-a3ed-38f28170fa9d\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#f22c40\"},\"line_color\":{\"value\":\"#f22c40\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"c0d0b0a2-0318-4b4c-bc77-1287dd2de541\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"FT\"},{\"pitch_type\":\"FT\"}],\"pitch_type\":[\"FT\",\"FT\"],\"x_values\":{\"__ndarray__\":\"0KO0ikuYwz940vvgtkWxPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"y_values\":{\"__ndarray__\":\"Dxzr9N4/CkASiJVP6GP9Pw==\",\"dtype\":\"float64\",\"shape\":[2]}}},\"id\":\"c32c2332-2b74-4e4a-af8a-44f8dd5aca19\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"64c3b802-f350-4ca8-b2f2-9df0d05faad6\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"658b74ca-f624-4fb7-a0bc-492b8734a0ec\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"cbe6eccb-3fd2-4fb9-bb60-3119ed74d8b7\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"fb507352-f966-4e79-9dc0-3c8d7f653297\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"750da11f-c502-4f67-b9b4-58c3ad0c47b8\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"e7c650ff-8038-4fce-bdcd-e78591939655\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"FC\"},\"renderers\":[{\"id\":\"e7c650ff-8038-4fce-bdcd-e78591939655\",\"type\":\"GlyphRenderer\"}]},\"id\":\"33c877a1-e2c7-43ba-9da0-c23f02c99583\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"}],\"pitch_type\":[\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\",\"SL\"],\"x_values\":{\"__ndarray__\":\"P1CRZ9lH+z8jJj0wb1vyP4kkMHOH0fg/WhomM0mC9D/CsiTIaCXev8s3xhoE3cs/AmeRuBm92r+CDMhYTmnzPxZvFPNajei/KicwXue54D/fd8qznZHzP2GIDuGDweo/eIPuRMaftD8Fq8jXNebYP8DSx3heWZs/gFn1Vv+/5b/thvZ/V1DavxHnRWrEJ+M/cGE9qlS5nj9WuQcRgcv0P/XO07jM79e/7vaOPJhv2j9ZWW0i3on5PxZnmPpedfC/pHglhF4r/T+YUkS8aVHNP/Oix17ZAuQ/kIqnFDEz3z8RsnDzLxXxP/2fUdb97uM/s8meTEho0D+XUe3hIAnYP9guMCasWNC/d6bGSRBs0L+NeT4lOKTUP4hH8ztWkcK/OrAd3KZl7j8ljxcPLkbzPw==\",\"dtype\":\"float64\",\"shape\":[38]},\"y_values\":{\"__ndarray__\":\"SDCTN5CbAUDfrrx2PK7/P3R8bh0sxO8/bZtRm0JTAkBw5v55n0j7P42EdCNHwu0/MXI+ObQPCED8X+onCjH9P5vi2SDYDvk/staXEZNTBUDBfainuTQDQLCFyc5+cug/L1zAaIjs/D8+LAevOlnhPy/WsAMlz/4//ydfzlt+CkAJNtxhlCr+P6dfzF5K6vk/ktYE7IBlBECzo1TUpBoBQN44Lg2rXv8/SyHy9qTH+z8iO2NRRwn7P1r3e9MBiARAJU0tNgaH5z8HRdZlaCDwPyfgsWiGRwVA7yV9kIjOAUDNTQiD1G4EQBLtv41tVNc/NCGnnIjq+D+xIeQLIJ3+P8atO7knpu8/qjrcXPr5BkAn7wv5y1bwP/KjQc/1ZglAhIRzBDZY9D//EdjHitP1Pw==\",\"dtype\":\"float64\",\"shape\":[38]}}},\"id\":\"64c3b802-f350-4ca8-b2f2-9df0d05faad6\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"FF\"},\"renderers\":[{\"id\":\"5668f15c-2851-45e5-a03d-5ee912acbe30\",\"type\":\"GlyphRenderer\"}]},\"id\":\"0b21b75e-1068-411b-a811-98bf753ccf9b\",\"type\":\"LegendItem\"},{\"attributes\":{\"plot\":null,\"text\":null},\"id\":\"77a51556-f8ed-4680-b4f7-d2ef0c80981e\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null,\"end\":6,\"start\":-1},\"id\":\"899f042a-d187-4d0f-92fb-cf7c6691e658\",\"type\":\"Range1d\"}],\"root_ids\":[\"233fde7b-97fe-4eb0-a852-13f0fb73df02\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.5\"}};\n",
" var render_items = [{\"docid\":\"972d4451-b767-4ef6-b680-18b6b762e8fa\",\"elementid\":\"2cc361fd-c46d-40db-9281-adaac7887581\",\"modelid\":\"233fde7b-97fe-4eb0-a852-13f0fb73df02\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
"\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"2cc361fd-c46d-40db-9281-adaac7887581\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
"\n",
" }\n",
"\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 'ダルビッシュ有さんの左打者対戦履歴〜2017'\n",
"\n",
"p = Scatter(\n",
" df_darvish_vs_left_so,\n",
" x='px',\n",
" y='pz',\n",
" color='pitch_type',\n",
" plot_width=600, \n",
" plot_height=600\n",
")\n",
"\n",
"p.x_range=Range1d(-3, 3)\n",
"p.y_range=Range1d(-1, 6)\n",
"p.xaxis.axis_label = 'ホームベースからの距離. -0.8〜0.8がストライクゾーン(マイナス側:右打者,プラス側:左打者)'\n",
"p.yaxis.axis_label = 'ホームベースからの高さ. ストライクゾーンの高低は打者により異なる(ルール上)'\n",
"show(p)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"# 同じような調子で,ホームラン打たれたボールを見てみる\n",
"df_darvish_vs_right_hr = df_darvish_vs_right.query(\"pa_terminal_fl == True and pa_event_cd == 23\")\n",
"df_darvish_vs_left_hr = df_darvish_vs_left.query(\"pa_terminal_fl == True and pa_event_cd == 23\")\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"11"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df_darvish_vs_right_hr)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"16"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df_darvish_vs_left_hr)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"2ee369d3-247a-4048-865a-059c0ee97753\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = false;\n",
"\n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
"\n",
"\n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
"\n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\n\"+\n",
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
"\n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"2ee369d3-247a-4048-865a-059c0ee97753\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"2ee369d3-247a-4048-865a-059c0ee97753\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '2ee369d3-247a-4048-865a-059c0ee97753' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
"\n",
" var js_urls = [];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"8a49d212-a51e-4e9d-ac64-c50c4fe3738e\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"3e5e052a-2e8e-4473-864b-dd5c60ca848f\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#df5320\"},\"line_color\":{\"value\":\"#df5320\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"69332aed-36e5-4aa1-8df7-2a60be9a57fe\",\"type\":\"Circle\"},{\"attributes\":{\"label\":{\"value\":\"SL\"},\"renderers\":[{\"id\":\"17f58e1e-ed80-4b84-9714-a8c231b1852a\",\"type\":\"GlyphRenderer\"}]},\"id\":\"bccea72f-79b7-4049-966a-860450522d02\",\"type\":\"LegendItem\"},{\"attributes\":{\"label\":{\"value\":\"FF\"},\"renderers\":[{\"id\":\"bd66497b-a13c-4e98-868f-57d607333e85\",\"type\":\"GlyphRenderer\"}]},\"id\":\"7b635fc9-d6bd-4b8c-b949-760407e1db92\",\"type\":\"LegendItem\"},{\"attributes\":{\"data_source\":{\"id\":\"97bf9142-e06c-4cfc-abab-ab8cf475b958\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"d5173162-0e28-4307-85f8-6232e4125b46\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"06b41202-3d60-4e62-9cf8-251146ffa448\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"75544d75-a101-449b-9096-bde8a1ecdb55\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"c7415512-347d-4454-9b69-beae5aee299c\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"75544d75-a101-449b-9096-bde8a1ecdb55\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"a7addf97-afa4-4077-b88f-d338b59af268\",\"type\":\"BasicTicker\"}},\"id\":\"1286326a-2f13-45a6-8add-0a1dcca4e59c\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"CU\"},\"renderers\":[{\"id\":\"06b41202-3d60-4e62-9cf8-251146ffa448\",\"type\":\"GlyphRenderer\"}]},\"id\":\"9ed51171-b169-4ea2-9259-a61f0b6580c2\",\"type\":\"LegendItem\"},{\"attributes\":{\"label\":{\"value\":\"FC\"},\"renderers\":[{\"id\":\"f653edbf-5be7-4bc2-a785-6ff0e110f8aa\",\"type\":\"GlyphRenderer\"}]},\"id\":\"9e26d209-9170-4a22-80f6-f94fb5856cc2\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"end\":6,\"start\":-1},\"id\":\"2a2cf039-3036-4261-922d-74992a679349\",\"type\":\"Range1d\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"}],\"pitch_type\":[\"FC\",\"FC\"],\"x_values\":{\"__ndarray__\":\"RlSzckID3b+KgL89oejQvw==\",\"dtype\":\"float64\",\"shape\":[2]},\"y_values\":{\"__ndarray__\":\"xeU01mTlAEDKIELgIoABQA==\",\"dtype\":\"float64\",\"shape\":[2]}}},\"id\":\"f58429f5-40bf-42fd-b939-a6418bd144f3\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"items\":[{\"id\":\"7b635fc9-d6bd-4b8c-b949-760407e1db92\",\"type\":\"LegendItem\"},{\"id\":\"bccea72f-79b7-4049-966a-860450522d02\",\"type\":\"LegendItem\"},{\"id\":\"9e26d209-9170-4a22-80f6-f94fb5856cc2\",\"type\":\"LegendItem\"},{\"id\":\"9ed51171-b169-4ea2-9259-a61f0b6580c2\",\"type\":\"LegendItem\"}],\"location\":\"top_left\",\"plot\":{\"id\":\"75544d75-a101-449b-9096-bde8a1ecdb55\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"b56e7125-6a8c-4ea9-92f9-96399a52b541\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"ba23d39c-c3ec-4c8a-91bc-5e633dece7fd\",\"type\":\"BasicTicker\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"8382dc9d-111c-4e18-819e-1f93524a08dd\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"75544d75-a101-449b-9096-bde8a1ecdb55\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ba23d39c-c3ec-4c8a-91bc-5e633dece7fd\",\"type\":\"BasicTicker\"}},\"id\":\"1e48639e-ac8f-4933-b7fe-07bb12e93563\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"727ff284-9adc-4384-89ef-2429cf66fe64\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"67cd35ae-044d-4d07-8357-6398760732e1\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"69332aed-36e5-4aa1-8df7-2a60be9a57fe\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"17f58e1e-ed80-4b84-9714-a8c231b1852a\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"4eb4151b-89f8-4bd6-a36f-325684f629b1\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"ee588315-3dba-40ab-bc91-f81ab37bee23\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"bd66497b-a13c-4e98-868f-57d607333e85\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#5ab738\"},\"line_color\":{\"value\":\"#5ab738\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"28db2b04-acd5-4dae-953e-efa5093cc9e7\",\"type\":\"Circle\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"51cae0b4-4683-4946-91a5-03b7dc8762d5\",\"type\":\"PanTool\"},{\"id\":\"c7415512-347d-4454-9b69-beae5aee299c\",\"type\":\"WheelZoomTool\"},{\"id\":\"f1c7a972-37ca-47fd-9e6c-06ca81c63610\",\"type\":\"BoxZoomTool\"},{\"id\":\"ab7bc271-edf0-4f6d-ae60-8426e6d4f93f\",\"type\":\"SaveTool\"},{\"id\":\"405a4c34-7c23-4543-a4c5-8f644d86d3ae\",\"type\":\"ResetTool\"},{\"id\":\"47fcb22b-bfce-4712-9949-d939a9446cac\",\"type\":\"HelpTool\"}]},\"id\":\"702bbe37-08d0-430e-8c5a-447ee63c9c80\",\"type\":\"Toolbar\"},{\"attributes\":{\"data_source\":{\"id\":\"f58429f5-40bf-42fd-b939-a6418bd144f3\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"28db2b04-acd5-4dae-953e-efa5093cc9e7\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"f653edbf-5be7-4bc2-a785-6ff0e110f8aa\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"7e1e99bc-8d8c-4523-956f-23bc63785a1a\",\"type\":\"ToolEvents\"},{\"attributes\":{\"overlay\":{\"id\":\"8382dc9d-111c-4e18-819e-1f93524a08dd\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"75544d75-a101-449b-9096-bde8a1ecdb55\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"f1c7a972-37ca-47fd-9e6c-06ca81c63610\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":null,\"text\":null},\"id\":\"ef4485c4-7649-432a-99eb-9da11b218231\",\"type\":\"Title\"},{\"attributes\":{\"plot\":{\"id\":\"75544d75-a101-449b-9096-bde8a1ecdb55\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"ab7bc271-edf0-4f6d-ae60-8426e6d4f93f\",\"type\":\"SaveTool\"},{\"attributes\":{\"below\":[{\"id\":\"b77b5276-a087-43dc-8e5d-095de2c3bc65\",\"type\":\"LinearAxis\"}],\"css_classes\":null,\"left\":[{\"id\":\"bd609e1b-346b-4fb3-8691-059fc6d961ab\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"8382dc9d-111c-4e18-819e-1f93524a08dd\",\"type\":\"BoxAnnotation\"},{\"id\":\"bd66497b-a13c-4e98-868f-57d607333e85\",\"type\":\"GlyphRenderer\"},{\"id\":\"17f58e1e-ed80-4b84-9714-a8c231b1852a\",\"type\":\"GlyphRenderer\"},{\"id\":\"f653edbf-5be7-4bc2-a785-6ff0e110f8aa\",\"type\":\"GlyphRenderer\"},{\"id\":\"06b41202-3d60-4e62-9cf8-251146ffa448\",\"type\":\"GlyphRenderer\"},{\"id\":\"b56e7125-6a8c-4ea9-92f9-96399a52b541\",\"type\":\"Legend\"},{\"id\":\"b77b5276-a087-43dc-8e5d-095de2c3bc65\",\"type\":\"LinearAxis\"},{\"id\":\"bd609e1b-346b-4fb3-8691-059fc6d961ab\",\"type\":\"LinearAxis\"},{\"id\":\"1286326a-2f13-45a6-8add-0a1dcca4e59c\",\"type\":\"Grid\"},{\"id\":\"1e48639e-ac8f-4933-b7fe-07bb12e93563\",\"type\":\"Grid\"}],\"title\":{\"id\":\"ef4485c4-7649-432a-99eb-9da11b218231\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"7e1e99bc-8d8c-4523-956f-23bc63785a1a\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"702bbe37-08d0-430e-8c5a-447ee63c9c80\",\"type\":\"Toolbar\"},\"x_mapper_type\":\"auto\",\"x_range\":{\"id\":\"5b1ba5b7-8595-4b17-82fe-3a6a2c8afbdb\",\"type\":\"Range1d\"},\"y_mapper_type\":\"auto\",\"y_range\":{\"id\":\"2a2cf039-3036-4261-922d-74992a679349\",\"type\":\"Range1d\"}},\"id\":\"75544d75-a101-449b-9096-bde8a1ecdb55\",\"subtype\":\"Chart\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"a7addf97-afa4-4077-b88f-d338b59af268\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"}],\"pitch_type\":[\"FF\",\"FF\",\"FF\",\"FF\",\"FF\"],\"x_values\":{\"__ndarray__\":\"BVFjIgzsyr9arsMo2eWsv0uruHY6rcG/Oyl9pAV81D/W78RiXvrAvw==\",\"dtype\":\"float64\",\"shape\":[5]},\"y_values\":{\"__ndarray__\":\"oWp06xr1CECC3wy+az0GQIm7UI+qEAhAGhHzJq8I+j+ttqS4hRcHQA==\",\"dtype\":\"float64\",\"shape\":[5]}}},\"id\":\"4eb4151b-89f8-4bd6-a36f-325684f629b1\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"}],\"pitch_type\":[\"SL\",\"SL\",\"SL\"],\"x_values\":{\"__ndarray__\":\"SpMeJvOK2L/8vbv1XBfHPyTLi6SJdtY/\",\"dtype\":\"float64\",\"shape\":[3]},\"y_values\":{\"__ndarray__\":\"bOklln2nAEALJ7pnv5cIQIdW4qJyagZA\",\"dtype\":\"float64\",\"shape\":[3]}}},\"id\":\"67cd35ae-044d-4d07-8357-6398760732e1\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis_label\":\"\\u30db\\u30fc\\u30e0\\u30d9\\u30fc\\u30b9\\u304b\\u3089\\u306e\\u9ad8\\u3055. \\u30b9\\u30c8\\u30e9\\u30a4\\u30af\\u30be\\u30fc\\u30f3\\u306e\\u9ad8\\u4f4e\\u306f\\u6253\\u8005\\u306b\\u3088\\u308a\\u7570\\u306a\\u308b(\\u30eb\\u30fc\\u30eb\\u4e0a)\",\"formatter\":{\"id\":\"3e5e052a-2e8e-4473-864b-dd5c60ca848f\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"75544d75-a101-449b-9096-bde8a1ecdb55\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ba23d39c-c3ec-4c8a-91bc-5e633dece7fd\",\"type\":\"BasicTicker\"}},\"id\":\"bd609e1b-346b-4fb3-8691-059fc6d961ab\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"end\":3,\"start\":-3},\"id\":\"5b1ba5b7-8595-4b17-82fe-3a6a2c8afbdb\",\"type\":\"Range1d\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"CU\"}],\"pitch_type\":[\"CU\"],\"x_values\":{\"__ndarray__\":\"NHw+rwcuy78=\",\"dtype\":\"float64\",\"shape\":[1]},\"y_values\":{\"__ndarray__\":\"WszFY17GAUA=\",\"dtype\":\"float64\",\"shape\":[1]}}},\"id\":\"97bf9142-e06c-4cfc-abab-ab8cf475b958\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"75544d75-a101-449b-9096-bde8a1ecdb55\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"51cae0b4-4683-4946-91a5-03b7dc8762d5\",\"type\":\"PanTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#407ee7\"},\"line_color\":{\"value\":\"#407ee7\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"ee588315-3dba-40ab-bc91-f81ab37bee23\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#f22c40\"},\"line_color\":{\"value\":\"#f22c40\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"d5173162-0e28-4307-85f8-6232e4125b46\",\"type\":\"Circle\"},{\"attributes\":{\"plot\":{\"id\":\"75544d75-a101-449b-9096-bde8a1ecdb55\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"405a4c34-7c23-4543-a4c5-8f644d86d3ae\",\"type\":\"ResetTool\"},{\"attributes\":{\"plot\":{\"id\":\"75544d75-a101-449b-9096-bde8a1ecdb55\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"47fcb22b-bfce-4712-9949-d939a9446cac\",\"type\":\"HelpTool\"},{\"attributes\":{\"axis_label\":\"\\u30db\\u30fc\\u30e0\\u30d9\\u30fc\\u30b9\\u304b\\u3089\\u306e\\u8ddd\\u96e2. -0.8\\u301c0.8\\u304c\\u30b9\\u30c8\\u30e9\\u30a4\\u30af\\u30be\\u30fc\\u30f3(\\u30de\\u30a4\\u30ca\\u30b9\\u5074\\uff1a\\u53f3\\u6253\\u8005,\\u30d7\\u30e9\\u30b9\\u5074\\uff1a\\u5de6\\u6253\\u8005)\",\"formatter\":{\"id\":\"727ff284-9adc-4384-89ef-2429cf66fe64\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"75544d75-a101-449b-9096-bde8a1ecdb55\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"a7addf97-afa4-4077-b88f-d338b59af268\",\"type\":\"BasicTicker\"}},\"id\":\"b77b5276-a087-43dc-8e5d-095de2c3bc65\",\"type\":\"LinearAxis\"}],\"root_ids\":[\"75544d75-a101-449b-9096-bde8a1ecdb55\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.5\"}};\n",
" var render_items = [{\"docid\":\"8a49d212-a51e-4e9d-ac64-c50c4fe3738e\",\"elementid\":\"2ee369d3-247a-4048-865a-059c0ee97753\",\"modelid\":\"75544d75-a101-449b-9096-bde8a1ecdb55\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
"\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"2ee369d3-247a-4048-865a-059c0ee97753\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
"\n",
" }\n",
"\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 合計27本...結構多い,まずは右(11本)から\n",
"\n",
"# 'ダルビッシュ有さんの右打者飛翔履歴〜2017'\n",
"\n",
"p = Scatter(\n",
" df_darvish_vs_right_hr,\n",
" x='px',\n",
" y='pz',\n",
" color='pitch_type',\n",
" plot_width=600, \n",
" plot_height=600\n",
")\n",
"\n",
"p.x_range=Range1d(-3, 3)\n",
"p.y_range=Range1d(-1, 6)\n",
"p.xaxis.axis_label = 'ホームベースからの距離. -0.8〜0.8がストライクゾーン(マイナス側:右打者,プラス側:左打者)'\n",
"p.yaxis.axis_label = 'ホームベースからの高さ. ストライクゾーンの高低は打者により異なる(ルール上)'\n",
"show(p)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"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>ab_number</th>\n",
" <th>away_team_id</th>\n",
" <th>away_team_lg</th>\n",
" <th>ax</th>\n",
" <th>ay</th>\n",
" <th>az</th>\n",
" <th>bat_box_name</th>\n",
" <th>bat_first_name</th>\n",
" <th>bat_hand_cd</th>\n",
" <th>bat_home_id</th>\n",
" <th>bat_last_name</th>\n",
" <th>bat_mlbid</th>\n",
" <th>break_angle</th>\n",
" <th>break_length</th>\n",
" <th>break_y</th>\n",
" <th>day</th>\n",
" <th>end_bases</th>\n",
" <th>end_speed</th>\n",
" <th>event_num</th>\n",
" <th>event_outs_ct</th>\n",
" <th>game_id</th>\n",
" <th>game_type</th>\n",
" <th>game_type_des</th>\n",
" <th>home_team_id</th>\n",
" <th>home_team_lg</th>\n",
" <th>inning_number</th>\n",
" <th>interleague_fl</th>\n",
" <th>local_game_time</th>\n",
" <th>month</th>\n",
" <th>outs_ct</th>\n",
" <th>pa_ball_ct</th>\n",
" <th>pa_event_cd</th>\n",
" <th>pa_strike_ct</th>\n",
" <th>pa_terminal_fl</th>\n",
" <th>park_id</th>\n",
" <th>park_location</th>\n",
" <th>park_name</th>\n",
" <th>pfx_x</th>\n",
" <th>pfx_z</th>\n",
" <th>pit_box_name</th>\n",
" <th>pit_first_name</th>\n",
" <th>pit_hand_cd</th>\n",
" <th>pit_last_name</th>\n",
" <th>pit_mlbid</th>\n",
" <th>pitch_des</th>\n",
" <th>pitch_id</th>\n",
" <th>pitch_res</th>\n",
" <th>pitch_seq</th>\n",
" <th>pitch_type</th>\n",
" <th>pitch_type_seq</th>\n",
" <th>playoff_fl</th>\n",
" <th>px</th>\n",
" <th>pz</th>\n",
" <th>regseason_fl</th>\n",
" <th>retro_game_id</th>\n",
" <th>spin_dir</th>\n",
" <th>spin_rate</th>\n",
" <th>st_fl</th>\n",
" <th>start_bases</th>\n",
" <th>start_speed</th>\n",
" <th>sv_id</th>\n",
" <th>sz_bot</th>\n",
" <th>sz_top</th>\n",
" <th>type_confidence</th>\n",
" <th>vx0</th>\n",
" <th>vy0</th>\n",
" <th>vz0</th>\n",
" <th>x</th>\n",
" <th>x0</th>\n",
" <th>y</th>\n",
" <th>y0</th>\n",
" <th>year</th>\n",
" <th>z0</th>\n",
" <th>zone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1630</th>\n",
" <td>41</td>\n",
" <td>cha</td>\n",
" <td>AL</td>\n",
" <td>-9.356818</td>\n",
" <td>26.968318</td>\n",
" <td>-14.091308</td>\n",
" <td>Abreu</td>\n",
" <td>Jose</td>\n",
" <td>R</td>\n",
" <td>0</td>\n",
" <td>Abreu</td>\n",
" <td>547989</td>\n",
" <td>27.0</td>\n",
" <td>4.0</td>\n",
" <td>23.8</td>\n",
" <td>16</td>\n",
" <td>___</td>\n",
" <td>83.6</td>\n",
" <td>299</td>\n",
" <td>0</td>\n",
" <td>491891</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>lan</td>\n",
" <td>NL</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" <td>19:10</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>23</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>22</td>\n",
" <td>Los Angeles, CA</td>\n",
" <td>Dodger Stadium</td>\n",
" <td>-5.304963</td>\n",
" <td>10.252232</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>In play, run(s)</td>\n",
" <td>299</td>\n",
" <td>X</td>\n",
" <td>BX</td>\n",
" <td>FF</td>\n",
" <td>SL|FF</td>\n",
" <td>False</td>\n",
" <td>0.32007</td>\n",
" <td>1.62712</td>\n",
" <td>True</td>\n",
" <td>LAN201708160</td>\n",
" <td>207.358</td>\n",
" <td>2242.417</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>90.8</td>\n",
" <td>170817_034019</td>\n",
" <td>1.588188</td>\n",
" <td>3.443987</td>\n",
" <td>0.886</td>\n",
" <td>7.193004</td>\n",
" <td>-131.724272</td>\n",
" <td>-7.569751</td>\n",
" <td>104.38</td>\n",
" <td>-1.751874</td>\n",
" <td>195.29</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.571709</td>\n",
" <td>9.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ab_number away_team_id away_team_lg ax ay az \\\n",
"1630 41 cha AL -9.356818 26.968318 -14.091308 \n",
"\n",
" bat_box_name bat_first_name bat_hand_cd bat_home_id bat_last_name \\\n",
"1630 Abreu Jose R 0 Abreu \n",
"\n",
" bat_mlbid break_angle break_length break_y day end_bases end_speed \\\n",
"1630 547989 27.0 4.0 23.8 16 ___ 83.6 \n",
"\n",
" event_num event_outs_ct game_id game_type game_type_des \\\n",
"1630 299 0 491891 R Regular Season \n",
"\n",
" home_team_id home_team_lg inning_number interleague_fl local_game_time \\\n",
"1630 lan NL 6 True 19:10 \n",
"\n",
" month outs_ct pa_ball_ct pa_event_cd pa_strike_ct pa_terminal_fl \\\n",
"1630 8 0 1 23 0 True \n",
"\n",
" park_id park_location park_name pfx_x pfx_z \\\n",
"1630 22 Los Angeles, CA Dodger Stadium -5.304963 10.252232 \n",
"\n",
" pit_box_name pit_first_name pit_hand_cd pit_last_name pit_mlbid \\\n",
"1630 Darvish Yu R Darvish 506433 \n",
"\n",
" pitch_des pitch_id pitch_res pitch_seq pitch_type pitch_type_seq \\\n",
"1630 In play, run(s) 299 X BX FF SL|FF \n",
"\n",
" playoff_fl px pz regseason_fl retro_game_id spin_dir \\\n",
"1630 False 0.32007 1.62712 True LAN201708160 207.358 \n",
"\n",
" spin_rate st_fl start_bases start_speed sv_id sz_bot \\\n",
"1630 2242.417 False ___ 90.8 170817_034019 1.588188 \n",
"\n",
" sz_top type_confidence vx0 vy0 vz0 x \\\n",
"1630 3.443987 0.886 7.193004 -131.724272 -7.569751 104.38 \n",
"\n",
" x0 y y0 year z0 zone \n",
"1630 -1.751874 195.29 50.0 2017 5.571709 9.0 "
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 外角低め(px0.3, pz1.5ちょい)くらいで打ったの誰だ???\n",
"df_darvish_vs_right_hr.query(\"pitch_type == 'FF' and pz < 2\")"
]
},
{
"cell_type": "code",
"execution_count": 26,
"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>ab_number</th>\n",
" <th>away_team_id</th>\n",
" <th>away_team_lg</th>\n",
" <th>ax</th>\n",
" <th>ay</th>\n",
" <th>az</th>\n",
" <th>bat_box_name</th>\n",
" <th>bat_first_name</th>\n",
" <th>bat_hand_cd</th>\n",
" <th>bat_home_id</th>\n",
" <th>bat_last_name</th>\n",
" <th>bat_mlbid</th>\n",
" <th>break_angle</th>\n",
" <th>break_length</th>\n",
" <th>break_y</th>\n",
" <th>day</th>\n",
" <th>end_bases</th>\n",
" <th>end_speed</th>\n",
" <th>event_num</th>\n",
" <th>event_outs_ct</th>\n",
" <th>game_id</th>\n",
" <th>game_type</th>\n",
" <th>game_type_des</th>\n",
" <th>home_team_id</th>\n",
" <th>home_team_lg</th>\n",
" <th>inning_number</th>\n",
" <th>interleague_fl</th>\n",
" <th>local_game_time</th>\n",
" <th>month</th>\n",
" <th>outs_ct</th>\n",
" <th>pa_ball_ct</th>\n",
" <th>pa_event_cd</th>\n",
" <th>pa_strike_ct</th>\n",
" <th>pa_terminal_fl</th>\n",
" <th>park_id</th>\n",
" <th>park_location</th>\n",
" <th>park_name</th>\n",
" <th>pfx_x</th>\n",
" <th>pfx_z</th>\n",
" <th>pit_box_name</th>\n",
" <th>pit_first_name</th>\n",
" <th>pit_hand_cd</th>\n",
" <th>pit_last_name</th>\n",
" <th>pit_mlbid</th>\n",
" <th>pitch_des</th>\n",
" <th>pitch_id</th>\n",
" <th>pitch_res</th>\n",
" <th>pitch_seq</th>\n",
" <th>pitch_type</th>\n",
" <th>pitch_type_seq</th>\n",
" <th>playoff_fl</th>\n",
" <th>px</th>\n",
" <th>pz</th>\n",
" <th>regseason_fl</th>\n",
" <th>retro_game_id</th>\n",
" <th>spin_dir</th>\n",
" <th>spin_rate</th>\n",
" <th>st_fl</th>\n",
" <th>start_bases</th>\n",
" <th>start_speed</th>\n",
" <th>sv_id</th>\n",
" <th>sz_bot</th>\n",
" <th>sz_top</th>\n",
" <th>type_confidence</th>\n",
" <th>vx0</th>\n",
" <th>vy0</th>\n",
" <th>vz0</th>\n",
" <th>x</th>\n",
" <th>x0</th>\n",
" <th>y</th>\n",
" <th>y0</th>\n",
" <th>year</th>\n",
" <th>z0</th>\n",
" <th>zone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>988</th>\n",
" <td>6</td>\n",
" <td>tex</td>\n",
" <td>AL</td>\n",
" <td>5.173777</td>\n",
" <td>22.593427</td>\n",
" <td>-39.312189</td>\n",
" <td>Kinsler</td>\n",
" <td>Ian</td>\n",
" <td>R</td>\n",
" <td>1</td>\n",
" <td>Kinsler</td>\n",
" <td>435079</td>\n",
" <td>-8.5</td>\n",
" <td>9.4</td>\n",
" <td>23.9</td>\n",
" <td>21</td>\n",
" <td>___</td>\n",
" <td>82.6</td>\n",
" <td>47</td>\n",
" <td>0</td>\n",
" <td>490760</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>det</td>\n",
" <td>AL</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" <td>20:05</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>23</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>2394</td>\n",
" <td>Detroit, MI</td>\n",
" <td>Comerica Park</td>\n",
" <td>3.033323</td>\n",
" <td>-4.185005</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>In play, run(s)</td>\n",
" <td>47</td>\n",
" <td>X</td>\n",
" <td>BBSSX</td>\n",
" <td>FC</td>\n",
" <td>FF|FF|FF|FF|FC</td>\n",
" <td>False</td>\n",
" <td>-0.453324</td>\n",
" <td>2.112009</td>\n",
" <td>True</td>\n",
" <td>DET201705210</td>\n",
" <td>35.934</td>\n",
" <td>993.572</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>88.4</td>\n",
" <td>170522_002419</td>\n",
" <td>1.47</td>\n",
" <td>3.27</td>\n",
" <td>2.0</td>\n",
" <td>4.976715</td>\n",
" <td>-128.728298</td>\n",
" <td>-1.008333</td>\n",
" <td>134.28</td>\n",
" <td>-2.793399</td>\n",
" <td>181.76</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.508254</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ab_number away_team_id away_team_lg ax ay az \\\n",
"988 6 tex AL 5.173777 22.593427 -39.312189 \n",
"\n",
" bat_box_name bat_first_name bat_hand_cd bat_home_id bat_last_name \\\n",
"988 Kinsler Ian R 1 Kinsler \n",
"\n",
" bat_mlbid break_angle break_length break_y day end_bases end_speed \\\n",
"988 435079 -8.5 9.4 23.9 21 ___ 82.6 \n",
"\n",
" event_num event_outs_ct game_id game_type game_type_des home_team_id \\\n",
"988 47 0 490760 R Regular Season det \n",
"\n",
" home_team_lg inning_number interleague_fl local_game_time month \\\n",
"988 AL 1 False 20:05 5 \n",
"\n",
" outs_ct pa_ball_ct pa_event_cd pa_strike_ct pa_terminal_fl park_id \\\n",
"988 0 2 23 2 True 2394 \n",
"\n",
" park_location park_name pfx_x pfx_z pit_box_name \\\n",
"988 Detroit, MI Comerica Park 3.033323 -4.185005 Darvish \n",
"\n",
" pit_first_name pit_hand_cd pit_last_name pit_mlbid pitch_des \\\n",
"988 Yu R Darvish 506433 In play, run(s) \n",
"\n",
" pitch_id pitch_res pitch_seq pitch_type pitch_type_seq playoff_fl \\\n",
"988 47 X BBSSX FC FF|FF|FF|FF|FC False \n",
"\n",
" px pz regseason_fl retro_game_id spin_dir spin_rate \\\n",
"988 -0.453324 2.112009 True DET201705210 35.934 993.572 \n",
"\n",
" st_fl start_bases start_speed sv_id sz_bot sz_top \\\n",
"988 False ___ 88.4 170522_002419 1.47 3.27 \n",
"\n",
" type_confidence vx0 vy0 vz0 x x0 \\\n",
"988 2.0 4.976715 -128.728298 -1.008333 134.28 -2.793399 \n",
"\n",
" y y0 year z0 zone \n",
"988 181.76 50.0 2017 5.508254 4.0 "
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 内角の体に当たりそうなところ(px-0.4, pz2ちょい)くらいで打ったの誰だ???\n",
"df_darvish_vs_right_hr.query(\"pitch_type == 'FC' and px < -0.4\")"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"6b896881-3e59-410f-b4b0-40a3ef0c530d\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = false;\n",
"\n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
"\n",
"\n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
"\n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\n\"+\n",
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
"\n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"6b896881-3e59-410f-b4b0-40a3ef0c530d\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"6b896881-3e59-410f-b4b0-40a3ef0c530d\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '6b896881-3e59-410f-b4b0-40a3ef0c530d' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
"\n",
" var js_urls = [];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"e5442b15-3a9a-4aac-918f-8d8557710e85\":{\"roots\":{\"references\":[{\"attributes\":{\"data_source\":{\"id\":\"dc5c01f5-0046-450b-a564-5957ba851f97\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"c95dd44a-1f68-4fa2-83b5-8f9b83f701f7\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"67c6ff84-5b2a-4ecf-be8f-a37cebb4037e\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"5e3894b0-ec07-465c-a543-6838076ffb3d\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"5aeb20b0-9890-4fc4-b5ea-942f13fe2e9b\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"44c0e961-a2b1-40bd-ba2b-d87ede518cbf\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"6149d19e-8595-4632-94e8-bdd85bcbb349\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data_source\":{\"id\":\"f57876b7-c544-42fd-b857-bf2a29c8ce99\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"5f3f79f0-abd6-4022-a3f7-3d5e05e4337a\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"335450d1-8ae4-4be9-ad6e-b6bed307f344\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#00ad9c\"},\"line_color\":{\"value\":\"#00ad9c\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"3bea3645-f4d7-4256-88fd-daeb280bf83c\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#5ab738\"},\"line_color\":{\"value\":\"#5ab738\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"243f1319-dcd5-4901-8fbd-ad996052674a\",\"type\":\"Circle\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"44c0e961-a2b1-40bd-ba2b-d87ede518cbf\",\"type\":\"BasicTicker\"}},\"id\":\"d4ae751a-98bb-4ebb-bfbf-d0060fb4669b\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"FC\"},\"renderers\":[{\"id\":\"6e6f882f-6cdc-46ad-84d6-bac3e763d478\",\"type\":\"GlyphRenderer\"}]},\"id\":\"8accd313-e81d-4321-90c6-f1246f3c66ac\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"},{\"pitch_type\":\"FF\"}],\"pitch_type\":[\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\",\"FF\"],\"x_values\":{\"__ndarray__\":\"bRhtqUGx4D8bJnJCKlnWvy5m8qXlrOg/hnOkl4CVwz8qXt/7Umi+vzqKD/LYQdW/iPJ++xwr0j+7IAmVJf9GPw==\",\"dtype\":\"float64\",\"shape\":[8]},\"y_values\":{\"__ndarray__\":\"2EKCrOCcB0Bj0s00D7gJQPzsJvksZfg/3Ya31vWf+j8zmsV/tbIDQPn3QSUxBglAEVr9E+D1BUDcJuHS8OsCQA==\",\"dtype\":\"float64\",\"shape\":[8]}}},\"id\":\"865a9c67-a737-47dd-9668-40fa1cef2d2c\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"items\":[{\"id\":\"09a5efd4-9753-49ce-a750-bfb3c5e8ac21\",\"type\":\"LegendItem\"},{\"id\":\"f6aacbbf-6de8-48aa-baa8-448f55977bca\",\"type\":\"LegendItem\"},{\"id\":\"8accd313-e81d-4321-90c6-f1246f3c66ac\",\"type\":\"LegendItem\"},{\"id\":\"848652c4-6ace-4952-b113-c95d1f749c79\",\"type\":\"LegendItem\"},{\"id\":\"f2d4abe9-bf9f-4f7e-9b0b-f70ccdc81ccb\",\"type\":\"LegendItem\"}],\"location\":\"top_left\",\"plot\":{\"id\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"3528b7e7-f2bf-4fa1-91d7-4400b5f95a6f\",\"type\":\"Legend\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"FC\"},{\"pitch_type\":\"FC\"}],\"pitch_type\":[\"FC\",\"FC\"],\"x_values\":{\"__ndarray__\":\"iHJB2pDD8L8abeblsGDkPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"y_values\":{\"__ndarray__\":\"b4ybKa62CECHS0hDkf4AQA==\",\"dtype\":\"float64\",\"shape\":[2]}}},\"id\":\"4abe5d2e-a0f3-4559-a508-eed4c6b1f0f4\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"FT\"},\"renderers\":[{\"id\":\"335450d1-8ae4-4be9-ad6e-b6bed307f344\",\"type\":\"GlyphRenderer\"}]},\"id\":\"f2d4abe9-bf9f-4f7e-9b0b-f70ccdc81ccb\",\"type\":\"LegendItem\"},{\"attributes\":{\"overlay\":{\"id\":\"a3167a35-82cc-42ba-b5f3-9ad31a614480\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"55a0c273-449d-4cac-bf79-d52a14962110\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"191afda7-9715-4718-966e-0bc7f911bf23\",\"type\":\"ToolEvents\"},{\"attributes\":{\"label\":{\"value\":\"CU\"},\"renderers\":[{\"id\":\"67c6ff84-5b2a-4ecf-be8f-a37cebb4037e\",\"type\":\"GlyphRenderer\"}]},\"id\":\"f6aacbbf-6de8-48aa-baa8-448f55977bca\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#407ee7\"},\"line_color\":{\"value\":\"#407ee7\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"81d4331d-a552-46e3-ada2-d37ba21b395e\",\"type\":\"Circle\"},{\"attributes\":{\"axis_label\":\"\\u30db\\u30fc\\u30e0\\u30d9\\u30fc\\u30b9\\u304b\\u3089\\u306e\\u9ad8\\u3055. \\u30b9\\u30c8\\u30e9\\u30a4\\u30af\\u30be\\u30fc\\u30f3\\u306e\\u9ad8\\u4f4e\\u306f\\u6253\\u8005\\u306b\\u3088\\u308a\\u7570\\u306a\\u308b(\\u30eb\\u30fc\\u30eb\\u4e0a)\",\"formatter\":{\"id\":\"b81c8d0b-9bfd-4006-99ce-e15d03a3c3d4\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"44c0e961-a2b1-40bd-ba2b-d87ede518cbf\",\"type\":\"BasicTicker\"}},\"id\":\"2717dc86-1943-4f9b-866a-89fb54e769e3\",\"type\":\"LinearAxis\"},{\"attributes\":{\"label\":{\"value\":\"SL\"},\"renderers\":[{\"id\":\"d89700f2-9662-4c8d-81ce-35519fcaae26\",\"type\":\"GlyphRenderer\"}]},\"id\":\"848652c4-6ace-4952-b113-c95d1f749c79\",\"type\":\"LegendItem\"},{\"attributes\":{\"data_source\":{\"id\":\"9d1d0a66-9a86-48b6-8617-2537da222905\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"3bea3645-f4d7-4256-88fd-daeb280bf83c\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"d89700f2-9662-4c8d-81ce-35519fcaae26\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"4abe5d2e-a0f3-4559-a508-eed4c6b1f0f4\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"243f1319-dcd5-4901-8fbd-ad996052674a\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"6e6f882f-6cdc-46ad-84d6-bac3e763d478\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"865a9c67-a737-47dd-9668-40fa1cef2d2c\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"81d4331d-a552-46e3-ada2-d37ba21b395e\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null},\"id\":\"7dd93dbb-2a52-404d-a114-ecae0a97dafa\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"3f8a21c5-367c-4e32-a3cc-99ced53eb279\",\"type\":\"ResetTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"FT\"},{\"pitch_type\":\"FT\"}],\"pitch_type\":[\"FT\",\"FT\"],\"x_values\":{\"__ndarray__\":\"s7ASbcI/079iO6kjt+HRPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"y_values\":{\"__ndarray__\":\"j2zDG0mKA0DWBkTW19EHQA==\",\"dtype\":\"float64\",\"shape\":[2]}}},\"id\":\"f57876b7-c544-42fd-b857-bf2a29c8ce99\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"ab0780a9-4f0e-4e0b-b4eb-90c72663d1a6\",\"type\":\"PanTool\"},{\"id\":\"6149d19e-8595-4632-94e8-bdd85bcbb349\",\"type\":\"WheelZoomTool\"},{\"id\":\"55a0c273-449d-4cac-bf79-d52a14962110\",\"type\":\"BoxZoomTool\"},{\"id\":\"4704a21a-7737-4f2e-ac95-06f2c8d8986e\",\"type\":\"SaveTool\"},{\"id\":\"3f8a21c5-367c-4e32-a3cc-99ced53eb279\",\"type\":\"ResetTool\"},{\"id\":\"5e3894b0-ec07-465c-a543-6838076ffb3d\",\"type\":\"HelpTool\"}]},\"id\":\"a02a3b71-a9f9-4d45-b560-c327dfa286dc\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"08d41101-fb9d-480a-8bb9-aae63a585cf7\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis_label\":\"\\u30db\\u30fc\\u30e0\\u30d9\\u30fc\\u30b9\\u304b\\u3089\\u306e\\u8ddd\\u96e2. -0.8\\u301c0.8\\u304c\\u30b9\\u30c8\\u30e9\\u30a4\\u30af\\u30be\\u30fc\\u30f3(\\u30de\\u30a4\\u30ca\\u30b9\\u5074\\uff1a\\u53f3\\u6253\\u8005,\\u30d7\\u30e9\\u30b9\\u5074\\uff1a\\u5de6\\u6253\\u8005)\",\"formatter\":{\"id\":\"08d41101-fb9d-480a-8bb9-aae63a585cf7\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5aeb20b0-9890-4fc4-b5ea-942f13fe2e9b\",\"type\":\"BasicTicker\"}},\"id\":\"1556ed0c-68a1-40db-ae86-8c0ba1c86bbf\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"end\":6,\"start\":-1},\"id\":\"9377d9cc-3d7e-475c-872a-afeff93fe6ff\",\"type\":\"Range1d\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"CU\"}],\"pitch_type\":[\"CU\"],\"x_values\":{\"__ndarray__\":\"0hH2QBnN278=\",\"dtype\":\"float64\",\"shape\":[1]},\"y_values\":{\"__ndarray__\":\"A/lHIjcUBkA=\",\"dtype\":\"float64\",\"shape\":[1]}}},\"id\":\"dc5c01f5-0046-450b-a564-5957ba851f97\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":null,\"text\":null},\"id\":\"1a4ce9f5-abb2-46c2-bf3d-531100215292\",\"type\":\"Title\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#df5320\"},\"line_color\":{\"value\":\"#df5320\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"5f3f79f0-abd6-4022-a3f7-3d5e05e4337a\",\"type\":\"Circle\"},{\"attributes\":{\"plot\":{\"id\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\",\"subtype\":\"Chart\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5aeb20b0-9890-4fc4-b5ea-942f13fe2e9b\",\"type\":\"BasicTicker\"}},\"id\":\"a4bc4352-f6c7-470d-ab8d-778e40703552\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"4704a21a-7737-4f2e-ac95-06f2c8d8986e\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"x_values\",\"y_values\"],\"data\":{\"chart_index\":[{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"},{\"pitch_type\":\"SL\"}],\"pitch_type\":[\"SL\",\"SL\",\"SL\"],\"x_values\":{\"__ndarray__\":\"pG/r0WaV4D+hxE8a34mkP1Wy0uGJTNI/\",\"dtype\":\"float64\",\"shape\":[3]},\"y_values\":{\"__ndarray__\":\"PXVplEsgAUDowGscCE4HQOgpIN8ggwBA\",\"dtype\":\"float64\",\"shape\":[3]}}},\"id\":\"9d1d0a66-9a86-48b6-8617-2537da222905\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"b81c8d0b-9bfd-4006-99ce-e15d03a3c3d4\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\",\"subtype\":\"Chart\",\"type\":\"Plot\"}},\"id\":\"ab0780a9-4f0e-4e0b-b4eb-90c72663d1a6\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null,\"end\":3,\"start\":-3},\"id\":\"f96984ff-2657-4b0d-b876-e276eea9e286\",\"type\":\"Range1d\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"a3167a35-82cc-42ba-b5f3-9ad31a614480\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.7},\"fill_color\":{\"value\":\"#f22c40\"},\"line_color\":{\"value\":\"#f22c40\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x_values\"},\"y\":{\"field\":\"y_values\"}},\"id\":\"c95dd44a-1f68-4fa2-83b5-8f9b83f701f7\",\"type\":\"Circle\"},{\"attributes\":{\"label\":{\"value\":\"FF\"},\"renderers\":[{\"id\":\"7dd93dbb-2a52-404d-a114-ecae0a97dafa\",\"type\":\"GlyphRenderer\"}]},\"id\":\"09a5efd4-9753-49ce-a750-bfb3c5e8ac21\",\"type\":\"LegendItem\"},{\"attributes\":{\"below\":[{\"id\":\"1556ed0c-68a1-40db-ae86-8c0ba1c86bbf\",\"type\":\"LinearAxis\"}],\"css_classes\":null,\"left\":[{\"id\":\"2717dc86-1943-4f9b-866a-89fb54e769e3\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"a3167a35-82cc-42ba-b5f3-9ad31a614480\",\"type\":\"BoxAnnotation\"},{\"id\":\"7dd93dbb-2a52-404d-a114-ecae0a97dafa\",\"type\":\"GlyphRenderer\"},{\"id\":\"67c6ff84-5b2a-4ecf-be8f-a37cebb4037e\",\"type\":\"GlyphRenderer\"},{\"id\":\"6e6f882f-6cdc-46ad-84d6-bac3e763d478\",\"type\":\"GlyphRenderer\"},{\"id\":\"d89700f2-9662-4c8d-81ce-35519fcaae26\",\"type\":\"GlyphRenderer\"},{\"id\":\"335450d1-8ae4-4be9-ad6e-b6bed307f344\",\"type\":\"GlyphRenderer\"},{\"id\":\"3528b7e7-f2bf-4fa1-91d7-4400b5f95a6f\",\"type\":\"Legend\"},{\"id\":\"1556ed0c-68a1-40db-ae86-8c0ba1c86bbf\",\"type\":\"LinearAxis\"},{\"id\":\"2717dc86-1943-4f9b-866a-89fb54e769e3\",\"type\":\"LinearAxis\"},{\"id\":\"a4bc4352-f6c7-470d-ab8d-778e40703552\",\"type\":\"Grid\"},{\"id\":\"d4ae751a-98bb-4ebb-bfbf-d0060fb4669b\",\"type\":\"Grid\"}],\"title\":{\"id\":\"1a4ce9f5-abb2-46c2-bf3d-531100215292\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"191afda7-9715-4718-966e-0bc7f911bf23\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"a02a3b71-a9f9-4d45-b560-c327dfa286dc\",\"type\":\"Toolbar\"},\"x_mapper_type\":\"auto\",\"x_range\":{\"id\":\"f96984ff-2657-4b0d-b876-e276eea9e286\",\"type\":\"Range1d\"},\"y_mapper_type\":\"auto\",\"y_range\":{\"id\":\"9377d9cc-3d7e-475c-872a-afeff93fe6ff\",\"type\":\"Range1d\"}},\"id\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\",\"subtype\":\"Chart\",\"type\":\"Plot\"}],\"root_ids\":[\"47867402-7840-4c0b-8e1f-83a4b25c08fc\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.5\"}};\n",
" var render_items = [{\"docid\":\"e5442b15-3a9a-4aac-918f-8d8557710e85\",\"elementid\":\"6b896881-3e59-410f-b4b0-40a3ef0c530d\",\"modelid\":\"47867402-7840-4c0b-8e1f-83a4b25c08fc\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
"\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"6b896881-3e59-410f-b4b0-40a3ef0c530d\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
"\n",
" }\n",
"\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 外角低めはホセ・アブレイユ(ホワイトソックス),内角の糞ボールはイアン・キンズラー(タイガース,今年からエンジェルスで大谷翔平と同僚)でした.\n",
"# 続いて左の傾向\n",
"\n",
"# 'ダルビッシュ有さんの左打者飛翔履歴〜2017'\n",
"\n",
"p = Scatter(\n",
" df_darvish_vs_left_hr,\n",
" x='px',\n",
" y='pz',\n",
" color='pitch_type',\n",
" plot_width=600, \n",
" plot_height=600\n",
")\n",
"\n",
"p.x_range=Range1d(-3, 3)\n",
"p.y_range=Range1d(-1, 6)\n",
"p.xaxis.axis_label = 'ホームベースからの距離. -0.8〜0.8がストライクゾーン(マイナス側:右打者,プラス側:左打者)'\n",
"p.yaxis.axis_label = 'ホームベースからの高さ. ストライクゾーンの高低は打者により異なる(ルール上)'\n",
"show(p)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"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>ab_number</th>\n",
" <th>away_team_id</th>\n",
" <th>away_team_lg</th>\n",
" <th>ax</th>\n",
" <th>ay</th>\n",
" <th>az</th>\n",
" <th>bat_box_name</th>\n",
" <th>bat_first_name</th>\n",
" <th>bat_hand_cd</th>\n",
" <th>bat_home_id</th>\n",
" <th>bat_last_name</th>\n",
" <th>bat_mlbid</th>\n",
" <th>break_angle</th>\n",
" <th>break_length</th>\n",
" <th>break_y</th>\n",
" <th>day</th>\n",
" <th>end_bases</th>\n",
" <th>end_speed</th>\n",
" <th>event_num</th>\n",
" <th>event_outs_ct</th>\n",
" <th>game_id</th>\n",
" <th>game_type</th>\n",
" <th>game_type_des</th>\n",
" <th>home_team_id</th>\n",
" <th>home_team_lg</th>\n",
" <th>inning_number</th>\n",
" <th>interleague_fl</th>\n",
" <th>local_game_time</th>\n",
" <th>month</th>\n",
" <th>outs_ct</th>\n",
" <th>pa_ball_ct</th>\n",
" <th>pa_event_cd</th>\n",
" <th>pa_strike_ct</th>\n",
" <th>pa_terminal_fl</th>\n",
" <th>park_id</th>\n",
" <th>park_location</th>\n",
" <th>park_name</th>\n",
" <th>pfx_x</th>\n",
" <th>pfx_z</th>\n",
" <th>pit_box_name</th>\n",
" <th>pit_first_name</th>\n",
" <th>pit_hand_cd</th>\n",
" <th>pit_last_name</th>\n",
" <th>pit_mlbid</th>\n",
" <th>pitch_des</th>\n",
" <th>pitch_id</th>\n",
" <th>pitch_res</th>\n",
" <th>pitch_seq</th>\n",
" <th>pitch_type</th>\n",
" <th>pitch_type_seq</th>\n",
" <th>playoff_fl</th>\n",
" <th>px</th>\n",
" <th>pz</th>\n",
" <th>regseason_fl</th>\n",
" <th>retro_game_id</th>\n",
" <th>spin_dir</th>\n",
" <th>spin_rate</th>\n",
" <th>st_fl</th>\n",
" <th>start_bases</th>\n",
" <th>start_speed</th>\n",
" <th>sv_id</th>\n",
" <th>sz_bot</th>\n",
" <th>sz_top</th>\n",
" <th>type_confidence</th>\n",
" <th>vx0</th>\n",
" <th>vy0</th>\n",
" <th>vz0</th>\n",
" <th>x</th>\n",
" <th>x0</th>\n",
" <th>y</th>\n",
" <th>y0</th>\n",
" <th>year</th>\n",
" <th>z0</th>\n",
" <th>zone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1470</th>\n",
" <td>28</td>\n",
" <td>tex</td>\n",
" <td>AL</td>\n",
" <td>-8.033128</td>\n",
" <td>29.80196</td>\n",
" <td>-16.367826</td>\n",
" <td>Miller, B</td>\n",
" <td>Brad</td>\n",
" <td>L</td>\n",
" <td>1</td>\n",
" <td>Miller</td>\n",
" <td>543543</td>\n",
" <td>19.3</td>\n",
" <td>3.9</td>\n",
" <td>23.8</td>\n",
" <td>21</td>\n",
" <td>___</td>\n",
" <td>88.6</td>\n",
" <td>204</td>\n",
" <td>2</td>\n",
" <td>491544</td>\n",
" <td>R</td>\n",
" <td>Regular Season</td>\n",
" <td>tba</td>\n",
" <td>AL</td>\n",
" <td>4</td>\n",
" <td>False</td>\n",
" <td>19:10</td>\n",
" <td>7</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>23</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>12</td>\n",
" <td>St. Petersburg, FL</td>\n",
" <td>Tropicana Field</td>\n",
" <td>-4.030043</td>\n",
" <td>7.929634</td>\n",
" <td>Darvish</td>\n",
" <td>Yu</td>\n",
" <td>R</td>\n",
" <td>Darvish</td>\n",
" <td>506433</td>\n",
" <td>In play, run(s)</td>\n",
" <td>204</td>\n",
" <td>X</td>\n",
" <td>SSBBX</td>\n",
" <td>FF</td>\n",
" <td>FF|FF|FF|FT|FF</td>\n",
" <td>False</td>\n",
" <td>0.771106</td>\n",
" <td>1.524701</td>\n",
" <td>True</td>\n",
" <td>TBA201707210</td>\n",
" <td>206.94</td>\n",
" <td>2511.505953</td>\n",
" <td>False</td>\n",
" <td>___</td>\n",
" <td>96.4</td>\n",
" <td>170722_002204</td>\n",
" <td>1.509872</td>\n",
" <td>3.319873</td>\n",
" <td>0.902</td>\n",
" <td>8.54776</td>\n",
" <td>-139.888513</td>\n",
" <td>-7.755537</td>\n",
" <td>85.88</td>\n",
" <td>-1.792308</td>\n",
" <td>197.38</td>\n",
" <td>50.0</td>\n",
" <td>2017</td>\n",
" <td>5.393683</td>\n",
" <td>14.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ab_number away_team_id away_team_lg ax ay az \\\n",
"1470 28 tex AL -8.033128 29.80196 -16.367826 \n",
"\n",
" bat_box_name bat_first_name bat_hand_cd bat_home_id bat_last_name \\\n",
"1470 Miller, B Brad L 1 Miller \n",
"\n",
" bat_mlbid break_angle break_length break_y day end_bases end_speed \\\n",
"1470 543543 19.3 3.9 23.8 21 ___ 88.6 \n",
"\n",
" event_num event_outs_ct game_id game_type game_type_des \\\n",
"1470 204 2 491544 R Regular Season \n",
"\n",
" home_team_id home_team_lg inning_number interleague_fl local_game_time \\\n",
"1470 tba AL 4 False 19:10 \n",
"\n",
" month outs_ct pa_ball_ct pa_event_cd pa_strike_ct pa_terminal_fl \\\n",
"1470 7 2 2 23 2 True \n",
"\n",
" park_id park_location park_name pfx_x pfx_z \\\n",
"1470 12 St. Petersburg, FL Tropicana Field -4.030043 7.929634 \n",
"\n",
" pit_box_name pit_first_name pit_hand_cd pit_last_name pit_mlbid \\\n",
"1470 Darvish Yu R Darvish 506433 \n",
"\n",
" pitch_des pitch_id pitch_res pitch_seq pitch_type \\\n",
"1470 In play, run(s) 204 X SSBBX FF \n",
"\n",
" pitch_type_seq playoff_fl px pz regseason_fl \\\n",
"1470 FF|FF|FF|FT|FF False 0.771106 1.524701 True \n",
"\n",
" retro_game_id spin_dir spin_rate st_fl start_bases start_speed \\\n",
"1470 TBA201707210 206.94 2511.505953 False ___ 96.4 \n",
"\n",
" sv_id sz_bot sz_top type_confidence vx0 vy0 \\\n",
"1470 170722_002204 1.509872 3.319873 0.902 8.54776 -139.888513 \n",
"\n",
" vz0 x x0 y y0 year z0 zone \n",
"1470 -7.755537 85.88 -1.792308 197.38 50.0 2017 5.393683 14.0 "
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# これもおかしなホームランが...内角低めのボール(px 0.6くらい,pz1.5)を打ったのは???\n",
"df_darvish_vs_left_hr.query(\"pitch_type == 'FF' and px > 0.6\")"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"# タンパベイ・レイズのブラッド・ミラー(今シーズン9本塁打)の仕業でした\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 結び\n",
"\n",
"## 三振の傾向\n",
"\n",
"* 右打者相手の時は内角高めのFF(4シーム)もしくは外角低めに逃げるスライダー(SL)を駆使している\n",
"* 左打者相手の時は外角高めのFFと,内角のスライダーが生命線\n",
"* 左右関係なく,低めのCU(カーブ)も使ってるFC(カットボール)が結構キマってる\n",
"\n",
"## ホームラン(飛翔)の傾向\n",
"\n",
"* 全体的にFFが打たれてる,投球する数も多いからってのもありそうですが\n",
"* 一方,CUはそんなにやられていない.流石決め球\n",
"* 一発も本塁打浴びてないFCを多投 or ちょっと打たれてるSLの精度を上げれば被本塁打減りそう...と思ってしまう(一個の仮説として)\n",
"* 186 2/3投げて27飛翔(HR/9 1.3,一試合完投で1.3本打たれる)のは若干多いのでダルさんの進化に期待!\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 続き\n",
"\n",
"ウイニングショット毎の球種(変化球),結果(hit, ball, strike)をカウントし,sankey diagramで描画する"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"from ipysankeywidget import SankeyWidget\n",
"from ipywidgets import Layout"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"layout = Layout(width=\"900\", height=\"600\")\n",
"def sankey(margin_top=10, **value):\n",
" \"\"\"Show SankeyWidget with default values for size and margins\"\"\"\n",
" return SankeyWidget(layout=layout,\n",
" margins=dict(top=margin_top, bottom=0, left=30, right=60),\n",
" **value)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"# まずはデータセットをサマリーする.\n",
"import numpy as np\n",
"\n",
"def pitch_summary(pitch_df):\n",
" return pitch_df.pivot_table(\n",
" index='pitch_type',\n",
" columns='pa_event_cd',\n",
" values=['pitch_id'],\n",
" aggfunc=np.count_nonzero\n",
" ).fillna(0)\n"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"df_summary_right = pitch_summary(df_darvish_vs_right)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"11\" halign=\"left\">pitch_id</th>\n",
" </tr>\n",
" <tr>\n",
" <th>pa_event_cd</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>14</th>\n",
" <th>15</th>\n",
" <th>16</th>\n",
" <th>18</th>\n",
" <th>19</th>\n",
" <th>20</th>\n",
" <th>21</th>\n",
" <th>22</th>\n",
" <th>23</th>\n",
" </tr>\n",
" <tr>\n",
" <th>pitch_type</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>CH</th>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CU</th>\n",
" <td>22.0</td>\n",
" <td>28.0</td>\n",
" <td>7.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>5.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>FC</th>\n",
" <td>87.0</td>\n",
" <td>36.0</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>15.0</td>\n",
" <td>8.0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>FF</th>\n",
" <td>206.0</td>\n",
" <td>226.0</td>\n",
" <td>70.0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>5.0</td>\n",
" <td>0.0</td>\n",
" <td>59.0</td>\n",
" <td>17.0</td>\n",
" <td>1.0</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>FT</th>\n",
" <td>107.0</td>\n",
" <td>77.0</td>\n",
" <td>29.0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>35.0</td>\n",
" <td>6.0</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>SL</th>\n",
" <td>167.0</td>\n",
" <td>133.0</td>\n",
" <td>32.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>38.0</td>\n",
" <td>11.0</td>\n",
" <td>1.0</td>\n",
" <td>14.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>U</th>\n",
" <td>6.0</td>\n",
" <td>5.0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" pitch_id \n",
"pa_event_cd 2 3 14 15 16 18 19 20 21 22 23\n",
"pitch_type \n",
"CH 3.0 2.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0\n",
"CU 22.0 28.0 7.0 0.0 0.0 0.0 1.0 5.0 2.0 0.0 1.0\n",
"FC 87.0 36.0 15.0 0.0 0.0 0.0 0.0 15.0 8.0 0.0 5.0\n",
"FF 206.0 226.0 70.0 0.0 4.0 5.0 0.0 59.0 17.0 1.0 17.0\n",
"FT 107.0 77.0 29.0 0.0 5.0 2.0 2.0 35.0 6.0 2.0 2.0\n",
"SL 167.0 133.0 32.0 0.0 0.0 2.0 1.0 38.0 11.0 1.0 14.0\n",
"U 6.0 5.0 0.0 4.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_summary_right"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"df_summary_left = pitch_summary(df_darvish_vs_left)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"9\" halign=\"left\">pitch_id</th>\n",
" </tr>\n",
" <tr>\n",
" <th>pa_event_cd</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>14</th>\n",
" <th>16</th>\n",
" <th>18</th>\n",
" <th>19</th>\n",
" <th>20</th>\n",
" <th>21</th>\n",
" <th>23</th>\n",
" </tr>\n",
" <tr>\n",
" <th>pitch_type</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>CH</th>\n",
" <td>22.0</td>\n",
" <td>21.0</td>\n",
" <td>6.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>3.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CU</th>\n",
" <td>30.0</td>\n",
" <td>49.0</td>\n",
" <td>8.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>16.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>FC</th>\n",
" <td>120.0</td>\n",
" <td>88.0</td>\n",
" <td>30.0</td>\n",
" <td>3.0</td>\n",
" <td>3.0</td>\n",
" <td>0.0</td>\n",
" <td>44.0</td>\n",
" <td>15.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>FF</th>\n",
" <td>168.0</td>\n",
" <td>167.0</td>\n",
" <td>55.0</td>\n",
" <td>2.0</td>\n",
" <td>9.0</td>\n",
" <td>1.0</td>\n",
" <td>70.0</td>\n",
" <td>23.0</td>\n",
" <td>18.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>FT</th>\n",
" <td>62.0</td>\n",
" <td>51.0</td>\n",
" <td>34.0</td>\n",
" <td>0.0</td>\n",
" <td>3.0</td>\n",
" <td>0.0</td>\n",
" <td>25.0</td>\n",
" <td>9.0</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>SL</th>\n",
" <td>114.0</td>\n",
" <td>130.0</td>\n",
" <td>36.0</td>\n",
" <td>3.0</td>\n",
" <td>3.0</td>\n",
" <td>1.0</td>\n",
" <td>45.0</td>\n",
" <td>16.0</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>U</th>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" pitch_id \n",
"pa_event_cd 2 3 14 16 18 19 20 21 23\n",
"pitch_type \n",
"CH 22.0 21.0 6.0 0.0 0.0 0.0 6.0 3.0 0.0\n",
"CU 30.0 49.0 8.0 1.0 1.0 0.0 16.0 2.0 1.0\n",
"FC 120.0 88.0 30.0 3.0 3.0 0.0 44.0 15.0 2.0\n",
"FF 168.0 167.0 55.0 2.0 9.0 1.0 70.0 23.0 18.0\n",
"FT 62.0 51.0 34.0 0.0 3.0 0.0 25.0 9.0 7.0\n",
"SL 114.0 130.0 36.0 3.0 3.0 1.0 45.0 16.0 7.0\n",
"U 2.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_summary_left"
]
},
{
"cell_type": "code",
"execution_count": 37,
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"11\" halign=\"left\">pitch_id</th>\n",
" </tr>\n",
" <tr>\n",
" <th>pa_event_cd</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>14</th>\n",
" <th>15</th>\n",
" <th>16</th>\n",
" <th>18</th>\n",
" <th>19</th>\n",
" <th>20</th>\n",
" <th>21</th>\n",
" <th>22</th>\n",
" <th>23</th>\n",
" </tr>\n",
" <tr>\n",
" <th>pitch_type</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>CH</th>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CU</th>\n",
" <td>22.0</td>\n",
" <td>28.0</td>\n",
" <td>7.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>5.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>FC</th>\n",
" <td>87.0</td>\n",
" <td>36.0</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>15.0</td>\n",
" <td>8.0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>FF</th>\n",
" <td>206.0</td>\n",
" <td>226.0</td>\n",
" <td>70.0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>5.0</td>\n",
" <td>0.0</td>\n",
" <td>59.0</td>\n",
" <td>17.0</td>\n",
" <td>1.0</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>FT</th>\n",
" <td>107.0</td>\n",
" <td>77.0</td>\n",
" <td>29.0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>35.0</td>\n",
" <td>6.0</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>SL</th>\n",
" <td>167.0</td>\n",
" <td>133.0</td>\n",
" <td>32.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>38.0</td>\n",
" <td>11.0</td>\n",
" <td>1.0</td>\n",
" <td>14.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>U</th>\n",
" <td>6.0</td>\n",
" <td>5.0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" pitch_id \n",
"pa_event_cd 2 3 14 15 16 18 19 20 21 22 23\n",
"pitch_type \n",
"CH 3.0 2.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0\n",
"CU 22.0 28.0 7.0 0.0 0.0 0.0 1.0 5.0 2.0 0.0 1.0\n",
"FC 87.0 36.0 15.0 0.0 0.0 0.0 0.0 15.0 8.0 0.0 5.0\n",
"FF 206.0 226.0 70.0 0.0 4.0 5.0 0.0 59.0 17.0 1.0 17.0\n",
"FT 107.0 77.0 29.0 0.0 5.0 2.0 2.0 35.0 6.0 2.0 2.0\n",
"SL 167.0 133.0 32.0 0.0 0.0 2.0 1.0 38.0 11.0 1.0 14.0\n",
"U 6.0 5.0 0.0 4.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_summary_right"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"# pa_event_code = target, pitch_type = source \n",
"TARGET_PARAMS = {\n",
" 2: 'out',\n",
" 3: 'strikeout',\n",
" 14: 'ball',\n",
" 15: 'intent',\n",
" 16: 'hbp',\n",
" 18: 'error',\n",
" 19: 'fc',\n",
" 20: '1b',\n",
" 21: '2b',\n",
" 22: '3b',\n",
" 23: 'hr',\n",
"}\n",
"\n",
"TYPE_PARAMS = {\n",
" 2: 'generic out',\n",
" 3: 'strike out',\n",
" 14: 'ball',\n",
" 15: 'other',\n",
" 16: 'other',\n",
" 18: 'other',\n",
" 19: 'other',\n",
" 20: 'hit',\n",
" 21: 'slugging',\n",
" 22: 'slugging',\n",
" 23: 'run',\n",
"}\n",
"\n",
"def summary2links_list(df):\n",
" _links = []\n",
" for k, v in df.to_dict().items():\n",
" for source, pitch_count in v.items():\n",
" if int(pitch_count) <= 0:\n",
" continue\n",
" _links.append(\n",
" {\n",
" 'source': source,\n",
" 'target':TARGET_PARAMS.get(k[1]),\n",
" 'value': int(pitch_count),\n",
" 'type': TYPE_PARAMS.get(k[1]),\n",
" }\n",
" )\n",
" return _links"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"links_right = summary2links_list(df_summary_right)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[{'source': 'CH', 'target': 'out', 'type': 'generic out', 'value': 3},\n",
" {'source': 'CU', 'target': 'out', 'type': 'generic out', 'value': 22},\n",
" {'source': 'FC', 'target': 'out', 'type': 'generic out', 'value': 87},\n",
" {'source': 'FF', 'target': 'out', 'type': 'generic out', 'value': 206},\n",
" {'source': 'FT', 'target': 'out', 'type': 'generic out', 'value': 107},\n",
" {'source': 'SL', 'target': 'out', 'type': 'generic out', 'value': 167},\n",
" {'source': 'U', 'target': 'out', 'type': 'generic out', 'value': 6},\n",
" {'source': 'CH', 'target': 'strikeout', 'type': 'strike out', 'value': 2},\n",
" {'source': 'CU', 'target': 'strikeout', 'type': 'strike out', 'value': 28},\n",
" {'source': 'FC', 'target': 'strikeout', 'type': 'strike out', 'value': 36},\n",
" {'source': 'FF', 'target': 'strikeout', 'type': 'strike out', 'value': 226},\n",
" {'source': 'FT', 'target': 'strikeout', 'type': 'strike out', 'value': 77},\n",
" {'source': 'SL', 'target': 'strikeout', 'type': 'strike out', 'value': 133},\n",
" {'source': 'U', 'target': 'strikeout', 'type': 'strike out', 'value': 5},\n",
" {'source': 'CU', 'target': 'ball', 'type': 'ball', 'value': 7},\n",
" {'source': 'FC', 'target': 'ball', 'type': 'ball', 'value': 15},\n",
" {'source': 'FF', 'target': 'ball', 'type': 'ball', 'value': 70},\n",
" {'source': 'FT', 'target': 'ball', 'type': 'ball', 'value': 29},\n",
" {'source': 'SL', 'target': 'ball', 'type': 'ball', 'value': 32},\n",
" {'source': 'U', 'target': 'intent', 'type': 'other', 'value': 4},\n",
" {'source': 'FF', 'target': 'hbp', 'type': 'other', 'value': 4},\n",
" {'source': 'FT', 'target': 'hbp', 'type': 'other', 'value': 5},\n",
" {'source': 'FF', 'target': 'error', 'type': 'other', 'value': 5},\n",
" {'source': 'FT', 'target': 'error', 'type': 'other', 'value': 2},\n",
" {'source': 'SL', 'target': 'error', 'type': 'other', 'value': 2},\n",
" {'source': 'CU', 'target': 'fc', 'type': 'other', 'value': 1},\n",
" {'source': 'FT', 'target': 'fc', 'type': 'other', 'value': 2},\n",
" {'source': 'SL', 'target': 'fc', 'type': 'other', 'value': 1},\n",
" {'source': 'CH', 'target': '1b', 'type': 'hit', 'value': 1},\n",
" {'source': 'CU', 'target': '1b', 'type': 'hit', 'value': 5},\n",
" {'source': 'FC', 'target': '1b', 'type': 'hit', 'value': 15},\n",
" {'source': 'FF', 'target': '1b', 'type': 'hit', 'value': 59},\n",
" {'source': 'FT', 'target': '1b', 'type': 'hit', 'value': 35},\n",
" {'source': 'SL', 'target': '1b', 'type': 'hit', 'value': 38},\n",
" {'source': 'U', 'target': '1b', 'type': 'hit', 'value': 1},\n",
" {'source': 'CU', 'target': '2b', 'type': 'slugging', 'value': 2},\n",
" {'source': 'FC', 'target': '2b', 'type': 'slugging', 'value': 8},\n",
" {'source': 'FF', 'target': '2b', 'type': 'slugging', 'value': 17},\n",
" {'source': 'FT', 'target': '2b', 'type': 'slugging', 'value': 6},\n",
" {'source': 'SL', 'target': '2b', 'type': 'slugging', 'value': 11},\n",
" {'source': 'FF', 'target': '3b', 'type': 'slugging', 'value': 1},\n",
" {'source': 'FT', 'target': '3b', 'type': 'slugging', 'value': 2},\n",
" {'source': 'SL', 'target': '3b', 'type': 'slugging', 'value': 1},\n",
" {'source': 'CU', 'target': 'hr', 'type': 'run', 'value': 1},\n",
" {'source': 'FC', 'target': 'hr', 'type': 'run', 'value': 5},\n",
" {'source': 'FF', 'target': 'hr', 'type': 'run', 'value': 17},\n",
" {'source': 'FT', 'target': 'hr', 'type': 'run', 'value': 2},\n",
" {'source': 'SL', 'target': 'hr', 'type': 'run', 'value': 14}]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"links_right"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"layout = Layout(width=\"900\", height=\"600\")\n",
"def sankey(margin_top=10, **value):\n",
" \"\"\"Show SankeyWidget with default values for size and margins\"\"\"\n",
" return SankeyWidget(layout=layout,\n",
" margins=dict(top=margin_top, bottom=0, left=30, right=60),\n",
" **value)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "de2f8d0a435645c58b13fc214fedc7af",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"<p>Failed to display Jupyter Widget of type <code>SankeyWidget</code>.</p>\n",
"<p>\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
" Widgets Documentation</a> for setup instructions.\n",
"</p>\n",
"<p>\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"</p>\n"
],
"text/plain": [
"SankeyWidget(layout=Layout(height='600', width='900'), links=[{'source': 'CH', 'target': 'out', 'value': 3, 'type': 'generic out'}, {'source': 'CU', 'target': 'out', 'value': 22, 'type': 'generic out'}, {'source': 'FC', 'target': 'out', 'value': 87, 'type': 'generic out'}, {'source': 'FF', 'target': 'out', 'value': 206, 'type': 'generic out'}, {'source': 'FT', 'target': 'out', 'value': 107, 'type': 'generic out'}, {'source': 'SL', 'target': 'out', 'value': 167, 'type': 'generic out'}, {'source': 'U', 'target': 'out', 'value': 6, 'type': 'generic out'}, {'source': 'CH', 'target': 'strikeout', 'value': 2, 'type': 'strike out'}, {'source': 'CU', 'target': 'strikeout', 'value': 28, 'type': 'strike out'}, {'source': 'FC', 'target': 'strikeout', 'value': 36, 'type': 'strike out'}, {'source': 'FF', 'target': 'strikeout', 'value': 226, 'type': 'strike out'}, {'source': 'FT', 'target': 'strikeout', 'value': 77, 'type': 'strike out'}, {'source': 'SL', 'target': 'strikeout', 'value': 133, 'type': 'strike out'}, {'source': 'U', 'target': 'strikeout', 'value': 5, 'type': 'strike out'}, {'source': 'CU', 'target': 'ball', 'value': 7, 'type': 'ball'}, {'source': 'FC', 'target': 'ball', 'value': 15, 'type': 'ball'}, {'source': 'FF', 'target': 'ball', 'value': 70, 'type': 'ball'}, {'source': 'FT', 'target': 'ball', 'value': 29, 'type': 'ball'}, {'source': 'SL', 'target': 'ball', 'value': 32, 'type': 'ball'}, {'source': 'U', 'target': 'intent', 'value': 4, 'type': 'other'}, {'source': 'FF', 'target': 'hbp', 'value': 4, 'type': 'other'}, {'source': 'FT', 'target': 'hbp', 'value': 5, 'type': 'other'}, {'source': 'FF', 'target': 'error', 'value': 5, 'type': 'other'}, {'source': 'FT', 'target': 'error', 'value': 2, 'type': 'other'}, {'source': 'SL', 'target': 'error', 'value': 2, 'type': 'other'}, {'source': 'CU', 'target': 'fc', 'value': 1, 'type': 'other'}, {'source': 'FT', 'target': 'fc', 'value': 2, 'type': 'other'}, {'source': 'SL', 'target': 'fc', 'value': 1, 'type': 'other'}, {'source': 'CH', 'target': '1b', 'value': 1, 'type': 'hit'}, {'source': 'CU', 'target': '1b', 'value': 5, 'type': 'hit'}, {'source': 'FC', 'target': '1b', 'value': 15, 'type': 'hit'}, {'source': 'FF', 'target': '1b', 'value': 59, 'type': 'hit'}, {'source': 'FT', 'target': '1b', 'value': 35, 'type': 'hit'}, {'source': 'SL', 'target': '1b', 'value': 38, 'type': 'hit'}, {'source': 'U', 'target': '1b', 'value': 1, 'type': 'hit'}, {'source': 'CU', 'target': '2b', 'value': 2, 'type': 'slugging'}, {'source': 'FC', 'target': '2b', 'value': 8, 'type': 'slugging'}, {'source': 'FF', 'target': '2b', 'value': 17, 'type': 'slugging'}, {'source': 'FT', 'target': '2b', 'value': 6, 'type': 'slugging'}, {'source': 'SL', 'target': '2b', 'value': 11, 'type': 'slugging'}, {'source': 'FF', 'target': '3b', 'value': 1, 'type': 'slugging'}, {'source': 'FT', 'target': '3b', 'value': 2, 'type': 'slugging'}, {'source': 'SL', 'target': '3b', 'value': 1, 'type': 'slugging'}, {'source': 'CU', 'target': 'hr', 'value': 1, 'type': 'run'}, {'source': 'FC', 'target': 'hr', 'value': 5, 'type': 'run'}, {'source': 'FF', 'target': 'hr', 'value': 17, 'type': 'run'}, {'source': 'FT', 'target': 'hr', 'value': 2, 'type': 'run'}, {'source': 'SL', 'target': 'hr', 'value': 14, 'type': 'run'}], margins={'top': 10, 'bottom': 0, 'left': 30, 'right': 60}, nodes=[{'id': 'SL'}, {'id': 'CU'}, {'id': 'out'}, {'id': 'FT'}, {'id': 'CH'}, {'id': 'ball'}, {'id': '1b'}, {'id': 'intent'}, {'id': 'U'}, {'id': 'hbp'}, {'id': 'error'}, {'id': 'hr'}, {'id': 'fc'}, {'id': 'FC'}, {'id': 'strikeout'}, {'id': '3b'}, {'id': 'FF'}, {'id': '2b'}])"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sankey(links=links_right)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"links_left = summary2links_list(df_summary_left)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e0895abe8c9946fdae2b9500bc565f54",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"<p>Failed to display Jupyter Widget of type <code>SankeyWidget</code>.</p>\n",
"<p>\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
" Widgets Documentation</a> for setup instructions.\n",
"</p>\n",
"<p>\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"</p>\n"
],
"text/plain": [
"SankeyWidget(layout=Layout(height='600', width='900'), links=[{'source': 'CH', 'target': 'out', 'value': 22, 'type': 'generic out'}, {'source': 'CU', 'target': 'out', 'value': 30, 'type': 'generic out'}, {'source': 'FC', 'target': 'out', 'value': 120, 'type': 'generic out'}, {'source': 'FF', 'target': 'out', 'value': 168, 'type': 'generic out'}, {'source': 'FT', 'target': 'out', 'value': 62, 'type': 'generic out'}, {'source': 'SL', 'target': 'out', 'value': 114, 'type': 'generic out'}, {'source': 'U', 'target': 'out', 'value': 2, 'type': 'generic out'}, {'source': 'CH', 'target': 'strikeout', 'value': 21, 'type': 'strike out'}, {'source': 'CU', 'target': 'strikeout', 'value': 49, 'type': 'strike out'}, {'source': 'FC', 'target': 'strikeout', 'value': 88, 'type': 'strike out'}, {'source': 'FF', 'target': 'strikeout', 'value': 167, 'type': 'strike out'}, {'source': 'FT', 'target': 'strikeout', 'value': 51, 'type': 'strike out'}, {'source': 'SL', 'target': 'strikeout', 'value': 130, 'type': 'strike out'}, {'source': 'U', 'target': 'strikeout', 'value': 1, 'type': 'strike out'}, {'source': 'CH', 'target': 'ball', 'value': 6, 'type': 'ball'}, {'source': 'CU', 'target': 'ball', 'value': 8, 'type': 'ball'}, {'source': 'FC', 'target': 'ball', 'value': 30, 'type': 'ball'}, {'source': 'FF', 'target': 'ball', 'value': 55, 'type': 'ball'}, {'source': 'FT', 'target': 'ball', 'value': 34, 'type': 'ball'}, {'source': 'SL', 'target': 'ball', 'value': 36, 'type': 'ball'}, {'source': 'CU', 'target': 'hbp', 'value': 1, 'type': 'other'}, {'source': 'FC', 'target': 'hbp', 'value': 3, 'type': 'other'}, {'source': 'FF', 'target': 'hbp', 'value': 2, 'type': 'other'}, {'source': 'SL', 'target': 'hbp', 'value': 3, 'type': 'other'}, {'source': 'CU', 'target': 'error', 'value': 1, 'type': 'other'}, {'source': 'FC', 'target': 'error', 'value': 3, 'type': 'other'}, {'source': 'FF', 'target': 'error', 'value': 9, 'type': 'other'}, {'source': 'FT', 'target': 'error', 'value': 3, 'type': 'other'}, {'source': 'SL', 'target': 'error', 'value': 3, 'type': 'other'}, {'source': 'FF', 'target': 'fc', 'value': 1, 'type': 'other'}, {'source': 'SL', 'target': 'fc', 'value': 1, 'type': 'other'}, {'source': 'CH', 'target': '1b', 'value': 6, 'type': 'hit'}, {'source': 'CU', 'target': '1b', 'value': 16, 'type': 'hit'}, {'source': 'FC', 'target': '1b', 'value': 44, 'type': 'hit'}, {'source': 'FF', 'target': '1b', 'value': 70, 'type': 'hit'}, {'source': 'FT', 'target': '1b', 'value': 25, 'type': 'hit'}, {'source': 'SL', 'target': '1b', 'value': 45, 'type': 'hit'}, {'source': 'CH', 'target': '2b', 'value': 3, 'type': 'slugging'}, {'source': 'CU', 'target': '2b', 'value': 2, 'type': 'slugging'}, {'source': 'FC', 'target': '2b', 'value': 15, 'type': 'slugging'}, {'source': 'FF', 'target': '2b', 'value': 23, 'type': 'slugging'}, {'source': 'FT', 'target': '2b', 'value': 9, 'type': 'slugging'}, {'source': 'SL', 'target': '2b', 'value': 16, 'type': 'slugging'}, {'source': 'CU', 'target': 'hr', 'value': 1, 'type': 'run'}, {'source': 'FC', 'target': 'hr', 'value': 2, 'type': 'run'}, {'source': 'FF', 'target': 'hr', 'value': 18, 'type': 'run'}, {'source': 'FT', 'target': 'hr', 'value': 7, 'type': 'run'}, {'source': 'SL', 'target': 'hr', 'value': 7, 'type': 'run'}], margins={'top': 10, 'bottom': 0, 'left': 30, 'right': 60}, nodes=[{'id': 'SL'}, {'id': 'CU'}, {'id': 'out'}, {'id': 'FT'}, {'id': 'CH'}, {'id': 'ball'}, {'id': '1b'}, {'id': 'hbp'}, {'id': 'U'}, {'id': 'hr'}, {'id': 'error'}, {'id': 'fc'}, {'id': 'FC'}, {'id': 'strikeout'}, {'id': 'FF'}, {'id': '2b'}])"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sankey(links=links_left)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import (\n",
" Image,\n",
" SVG\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"sankey_left = sankey(links=links_left)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2e96e586506c4e159ba9e5cfcff07044",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"<p>Failed to display Jupyter Widget of type <code>SankeyWidget</code>.</p>\n",
"<p>\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
" Widgets Documentation</a> for setup instructions.\n",
"</p>\n",
"<p>\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"</p>\n"
],
"text/plain": [
"SankeyWidget(layout=Layout(height='600', width='900'), links=[{'source': 'CH', 'target': 'out', 'value': 22, 'type': 'generic out'}, {'source': 'CU', 'target': 'out', 'value': 30, 'type': 'generic out'}, {'source': 'FC', 'target': 'out', 'value': 120, 'type': 'generic out'}, {'source': 'FF', 'target': 'out', 'value': 168, 'type': 'generic out'}, {'source': 'FT', 'target': 'out', 'value': 62, 'type': 'generic out'}, {'source': 'SL', 'target': 'out', 'value': 114, 'type': 'generic out'}, {'source': 'U', 'target': 'out', 'value': 2, 'type': 'generic out'}, {'source': 'CH', 'target': 'strikeout', 'value': 21, 'type': 'strike out'}, {'source': 'CU', 'target': 'strikeout', 'value': 49, 'type': 'strike out'}, {'source': 'FC', 'target': 'strikeout', 'value': 88, 'type': 'strike out'}, {'source': 'FF', 'target': 'strikeout', 'value': 167, 'type': 'strike out'}, {'source': 'FT', 'target': 'strikeout', 'value': 51, 'type': 'strike out'}, {'source': 'SL', 'target': 'strikeout', 'value': 130, 'type': 'strike out'}, {'source': 'U', 'target': 'strikeout', 'value': 1, 'type': 'strike out'}, {'source': 'CH', 'target': 'ball', 'value': 6, 'type': 'ball'}, {'source': 'CU', 'target': 'ball', 'value': 8, 'type': 'ball'}, {'source': 'FC', 'target': 'ball', 'value': 30, 'type': 'ball'}, {'source': 'FF', 'target': 'ball', 'value': 55, 'type': 'ball'}, {'source': 'FT', 'target': 'ball', 'value': 34, 'type': 'ball'}, {'source': 'SL', 'target': 'ball', 'value': 36, 'type': 'ball'}, {'source': 'CU', 'target': 'hbp', 'value': 1, 'type': 'other'}, {'source': 'FC', 'target': 'hbp', 'value': 3, 'type': 'other'}, {'source': 'FF', 'target': 'hbp', 'value': 2, 'type': 'other'}, {'source': 'SL', 'target': 'hbp', 'value': 3, 'type': 'other'}, {'source': 'CU', 'target': 'error', 'value': 1, 'type': 'other'}, {'source': 'FC', 'target': 'error', 'value': 3, 'type': 'other'}, {'source': 'FF', 'target': 'error', 'value': 9, 'type': 'other'}, {'source': 'FT', 'target': 'error', 'value': 3, 'type': 'other'}, {'source': 'SL', 'target': 'error', 'value': 3, 'type': 'other'}, {'source': 'FF', 'target': 'fc', 'value': 1, 'type': 'other'}, {'source': 'SL', 'target': 'fc', 'value': 1, 'type': 'other'}, {'source': 'CH', 'target': '1b', 'value': 6, 'type': 'hit'}, {'source': 'CU', 'target': '1b', 'value': 16, 'type': 'hit'}, {'source': 'FC', 'target': '1b', 'value': 44, 'type': 'hit'}, {'source': 'FF', 'target': '1b', 'value': 70, 'type': 'hit'}, {'source': 'FT', 'target': '1b', 'value': 25, 'type': 'hit'}, {'source': 'SL', 'target': '1b', 'value': 45, 'type': 'hit'}, {'source': 'CH', 'target': '2b', 'value': 3, 'type': 'slugging'}, {'source': 'CU', 'target': '2b', 'value': 2, 'type': 'slugging'}, {'source': 'FC', 'target': '2b', 'value': 15, 'type': 'slugging'}, {'source': 'FF', 'target': '2b', 'value': 23, 'type': 'slugging'}, {'source': 'FT', 'target': '2b', 'value': 9, 'type': 'slugging'}, {'source': 'SL', 'target': '2b', 'value': 16, 'type': 'slugging'}, {'source': 'CU', 'target': 'hr', 'value': 1, 'type': 'run'}, {'source': 'FC', 'target': 'hr', 'value': 2, 'type': 'run'}, {'source': 'FF', 'target': 'hr', 'value': 18, 'type': 'run'}, {'source': 'FT', 'target': 'hr', 'value': 7, 'type': 'run'}, {'source': 'SL', 'target': 'hr', 'value': 7, 'type': 'run'}], margins={'top': 10, 'bottom': 0, 'left': 30, 'right': 60}, nodes=[{'id': 'SL'}, {'id': 'CU'}, {'id': 'out'}, {'id': 'FT'}, {'id': 'CH'}, {'id': 'ball'}, {'id': '1b'}, {'id': 'hbp'}, {'id': 'U'}, {'id': 'hr'}, {'id': 'error'}, {'id': 'fc'}, {'id': 'FC'}, {'id': 'strikeout'}, {'id': 'FF'}, {'id': '2b'}])"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sankey_left.auto_save_png('sankey_left.png')"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"sankey_right = sankey(links=links_right)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "907cd6266c61468fb02d3961910d5b7c",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"<p>Failed to display Jupyter Widget of type <code>SankeyWidget</code>.</p>\n",
"<p>\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
" Widgets Documentation</a> for setup instructions.\n",
"</p>\n",
"<p>\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"</p>\n"
],
"text/plain": [
"SankeyWidget(layout=Layout(height='600', width='900'), links=[{'source': 'CH', 'target': 'out', 'value': 3, 'type': 'generic out'}, {'source': 'CU', 'target': 'out', 'value': 22, 'type': 'generic out'}, {'source': 'FC', 'target': 'out', 'value': 87, 'type': 'generic out'}, {'source': 'FF', 'target': 'out', 'value': 206, 'type': 'generic out'}, {'source': 'FT', 'target': 'out', 'value': 107, 'type': 'generic out'}, {'source': 'SL', 'target': 'out', 'value': 167, 'type': 'generic out'}, {'source': 'U', 'target': 'out', 'value': 6, 'type': 'generic out'}, {'source': 'CH', 'target': 'strikeout', 'value': 2, 'type': 'strike out'}, {'source': 'CU', 'target': 'strikeout', 'value': 28, 'type': 'strike out'}, {'source': 'FC', 'target': 'strikeout', 'value': 36, 'type': 'strike out'}, {'source': 'FF', 'target': 'strikeout', 'value': 226, 'type': 'strike out'}, {'source': 'FT', 'target': 'strikeout', 'value': 77, 'type': 'strike out'}, {'source': 'SL', 'target': 'strikeout', 'value': 133, 'type': 'strike out'}, {'source': 'U', 'target': 'strikeout', 'value': 5, 'type': 'strike out'}, {'source': 'CU', 'target': 'ball', 'value': 7, 'type': 'ball'}, {'source': 'FC', 'target': 'ball', 'value': 15, 'type': 'ball'}, {'source': 'FF', 'target': 'ball', 'value': 70, 'type': 'ball'}, {'source': 'FT', 'target': 'ball', 'value': 29, 'type': 'ball'}, {'source': 'SL', 'target': 'ball', 'value': 32, 'type': 'ball'}, {'source': 'U', 'target': 'intent', 'value': 4, 'type': 'other'}, {'source': 'FF', 'target': 'hbp', 'value': 4, 'type': 'other'}, {'source': 'FT', 'target': 'hbp', 'value': 5, 'type': 'other'}, {'source': 'FF', 'target': 'error', 'value': 5, 'type': 'other'}, {'source': 'FT', 'target': 'error', 'value': 2, 'type': 'other'}, {'source': 'SL', 'target': 'error', 'value': 2, 'type': 'other'}, {'source': 'CU', 'target': 'fc', 'value': 1, 'type': 'other'}, {'source': 'FT', 'target': 'fc', 'value': 2, 'type': 'other'}, {'source': 'SL', 'target': 'fc', 'value': 1, 'type': 'other'}, {'source': 'CH', 'target': '1b', 'value': 1, 'type': 'hit'}, {'source': 'CU', 'target': '1b', 'value': 5, 'type': 'hit'}, {'source': 'FC', 'target': '1b', 'value': 15, 'type': 'hit'}, {'source': 'FF', 'target': '1b', 'value': 59, 'type': 'hit'}, {'source': 'FT', 'target': '1b', 'value': 35, 'type': 'hit'}, {'source': 'SL', 'target': '1b', 'value': 38, 'type': 'hit'}, {'source': 'U', 'target': '1b', 'value': 1, 'type': 'hit'}, {'source': 'CU', 'target': '2b', 'value': 2, 'type': 'slugging'}, {'source': 'FC', 'target': '2b', 'value': 8, 'type': 'slugging'}, {'source': 'FF', 'target': '2b', 'value': 17, 'type': 'slugging'}, {'source': 'FT', 'target': '2b', 'value': 6, 'type': 'slugging'}, {'source': 'SL', 'target': '2b', 'value': 11, 'type': 'slugging'}, {'source': 'FF', 'target': '3b', 'value': 1, 'type': 'slugging'}, {'source': 'FT', 'target': '3b', 'value': 2, 'type': 'slugging'}, {'source': 'SL', 'target': '3b', 'value': 1, 'type': 'slugging'}, {'source': 'CU', 'target': 'hr', 'value': 1, 'type': 'run'}, {'source': 'FC', 'target': 'hr', 'value': 5, 'type': 'run'}, {'source': 'FF', 'target': 'hr', 'value': 17, 'type': 'run'}, {'source': 'FT', 'target': 'hr', 'value': 2, 'type': 'run'}, {'source': 'SL', 'target': 'hr', 'value': 14, 'type': 'run'}], margins={'top': 10, 'bottom': 0, 'left': 30, 'right': 60}, nodes=[{'id': 'SL'}, {'id': 'CU'}, {'id': 'out'}, {'id': 'FT'}, {'id': 'CH'}, {'id': 'ball'}, {'id': '1b'}, {'id': 'intent'}, {'id': 'U'}, {'id': 'hbp'}, {'id': 'error'}, {'id': 'hr'}, {'id': 'fc'}, {'id': 'FC'}, {'id': 'strikeout'}, {'id': '3b'}, {'id': 'FF'}, {'id': '2b'}])"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sankey_right.auto_save_png('sankey_right.png')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment