Newer
Older
import math
from abc import ABC
from typing import List
import matplotlib.pyplot as plt
import numpy as np
from fastf1.core import Session, Lap
from DataHandler import DataHandler
class DataPlotter(DataHandler):
Lennard Geese
committed
def plotOvertakesWithTireChangeWindow(self, overtakesPerLap: List[int], earliestTireChange: int, latestTireChange: int, raceName: str):
overtakesPerLap.insert(0, 0) # Insert 0th lap, which cannot have overtakes
laps: int = len(overtakesPerLap)
figure, axis = plt.subplots(figsize=(8.0, 4.9))
axis.plot(overtakesPerLap)
axis.set_xlabel('Lap')
axis.set_ylabel('Position changes in lap')
Lennard Geese
committed
axis.set_title(raceName)
major_ticks_laps = np.arange(0, laps, 5)
major_ticks_overtakes = np.arange(0, max(overtakesPerLap) + 1, 5)
minor_ticks_laps = np.arange(0, laps, 1)
minor_ticks_overtakes = np.arange(0, max(overtakesPerLap) + 1, 1)
axis.set_xticks(major_ticks_laps)
axis.set_xticks(minor_ticks_laps, minor=True)
axis.set_yticks(major_ticks_overtakes)
axis.set_yticks(minor_ticks_overtakes, minor=True)
# And a corresponding grid
axis.grid(which='both')
# Or if you want different settings for the grids:
axis.grid(which='minor', alpha=0.2)
axis.grid(which='major', alpha=0.5)
axis.legend(bbox_to_anchor=(1.0, 1.02))
plt.tight_layout()
plt.show()