Skip to content
Snippets Groups Projects
DataPlotter.py 1.66 KiB
Newer Older
  • Learn to ignore specific revisions
  • Lennard Geese's avatar
    T
    Lennard Geese committed
    import matplotlib.pyplot as plt
    
    import pandas as pd
    from matplotlib import cm
    import matplotlib as mpl
    
    Lennard Geese's avatar
    T
    Lennard Geese committed
    import numpy as np
    
    from matplotlib.colors import ListedColormap
    
    Lennard Geese's avatar
    T
    Lennard Geese committed
    
    
    from DataHandler import DataHandler, WeatherChangeWindow
    
    Lennard Geese's avatar
    T
    Lennard Geese committed
    
    class DataPlotter(DataHandler):
    
    Lennard Geese's avatar
    Lennard Geese committed
    
    
        def plotOvertakes(self, overtakesPerLap: list[int], raceName: str, weatherChangeWindows: list[WeatherChangeWindow] = None):
    
    Lennard Geese's avatar
    Lennard Geese committed
            # Define variables
    
    Lennard Geese's avatar
    T
    Lennard Geese committed
            laps: int = len(overtakesPerLap)
    
    Lennard Geese's avatar
    Lennard Geese committed
            axis = plt.gca()
    
    Lennard Geese's avatar
    Lennard Geese committed
            # Set x-range of plot
            plt.xlim(0, laps + 1)
    
    Lennard Geese's avatar
    T
    Lennard Geese committed
    
    
            # Define data range
            x_values = np.arange(1, laps + 1)
            plt.plot(x_values, overtakesPerLap)
    
    Lennard Geese's avatar
    T
    Lennard Geese committed
    
    
    Lennard Geese's avatar
    Lennard Geese committed
            # Paint background for weather change windows
    
            for weatherChangeWindow in weatherChangeWindows:
                axis.axvspan(weatherChangeWindow.firstLap, weatherChangeWindow.lastLap, color='blue', alpha=0.3)
    
    Lennard Geese's avatar
    T
    Lennard Geese committed
            axis.set_xlabel('Lap')
            axis.set_ylabel('Position changes in lap')
    
    Lennard Geese's avatar
    T
    Lennard Geese committed
    
    
            # Set ticks on axis
            major_ticks_laps = np.arange(0, laps + 1, 5)
    
    Lennard Geese's avatar
    T
    Lennard Geese committed
            major_ticks_overtakes = np.arange(0, max(overtakesPerLap) + 1, 5)
    
            minor_ticks_laps = np.arange(0, laps + 1, 1)
    
    Lennard Geese's avatar
    T
    Lennard Geese committed
            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)
    
    
    Lennard Geese's avatar
    T
    Lennard Geese committed
            axis.grid(which='both')
            axis.grid(which='minor', alpha=0.2)
            axis.grid(which='major', alpha=0.5)
    
            plt.tight_layout()
    
    Lennard Geese's avatar
    Lennard Geese committed
            plt.show()