ラップタイム比較グラフ [自作の fastf1 便利ライブラリ]
複数ドライバーのラップタイムをグラフ化する
以前、複数ドライバーのラップタイム推移を比較 で複数ドライバーのラップタイムをグラフ化して比較する関数を作成しました。これまでもたびたび使用していましたが、手入力していると引数が大変なので、こちらも Jupyter Lab のウィジェットで実行できるようなコードを書いてみました。
from ipywidgets import interact, SelectMultiple
def f(drv1, a, b):
ff1.laptime_comperition(
session=session_race,
drivers=drv1,
min_sec=a,
max_sec=b
)
driver_codes = {
drv: session_race.get_driver(drv)['Abbreviation']
for drv in session_race.drivers
}
w1 = SelectMultiple(
options=list(driver_codes.values()),
rows=6,
description='Drivers',
disabled=False
)
interact(f, drv1=w1, a=(50, 110, 1), b=(55, 115, 1))
これを Jupyter Lab で実行してみると、以下のようにドライバーを選ぶリストとグラフが表示されます。
比較するドライバーを選び、スライダーはグラフに表示するラップタイムの範囲を指定します。ラップタイムの範囲全体を表示してしまうと、ピットインのラップやセーフティーカーが入った場合などにグラフの上下幅が大きくなって見づらくなるので、手動で指定できるようにしています。
これを見てみると、タイヤのでグラデーションがほとんどなく、右肩上がりにラップタイムが良くなっていることがわかります。通常であればピットイン直後のフレッシュなタイヤでタイムを稼ぐアンダーカットが有効になりますが、今回はあまり有効にならなかったということが見て取れます。メルセデスのアントネッリはタイヤ交換後にペースが上がっていますが、これはピットインする前はローソンに抑えられていたため、と考えていいと思います。
ターゲットとするドライバーとのタイム差をグラフ化する
もう一つ、こんなグラフを描く関数も作りました。
これは角田のタイムを基準 (0 の位置) にして、ほかのドライバーが前後どのあたりに位置していたかをグラフ化します。これを見ると、黄色線のローソンがピットイン後、じわりじわりと角田との差が開いていき、35周を過ぎたあたりでピット作業のロスタイムと言われた 20 秒を超えようかという感じでした。先ほどのグラフでもあったように、角田のペースは落ちていなかったので、このままいけば安全にローソンの前に出られるくらいのマージンを築けそうでしたが、38 周目にノリスがピットインしたのでそれをカバーするために角田もピットイン。ノリスのピット作業に時間がかかったのであと 1 周くらいは余裕があるかもしれなかったですが、アントネッリのペースの上がり具合もあったので、レッドブルは警戒して確実にノリスをカバーしたと思われます。
こちらも手入力すると大変なので、ウィジェットで引数を指定できるようにしてみました。
from ipywidgets import interact, SelectMultiple, Select
def f(drv1, drv2):
ff1.deltatime_comperition(
session=session_race,
drivers=(drv2,) + drv1
)
driver_codes = {
drv: session_race.get_driver(drv)['Abbreviation']
for drv in session_race.drivers
}
w2 = Select(description='Target:', options=list(driver_codes.values()), rows=4,)
w1 = SelectMultiple(
options=list(driver_codes.values()),
rows=6,
description='Drivers',
disabled=False
)
interact(f, drv1=w1, drv2=w2)
Drivers
は Ctrl や Shidt を押しながらクリックすると複数ドライバーを選択できます。Target
は一人を選びますが、これは Target
のドライバーを基準に、Drivers
で選んだドライバーのチャートを表示する、という動きになります。そのため、上の画面では角田を基準にして、アントネッリ、ローソン、ノリス、ハミルトンのタイムを並べている形になっています。