#!/usr/bin/env python3
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

try:
    df = pd.read_csv('bench.csv')
except FileNotFoundError:
    print("Error: 'bench.csv' not found in the current directory.")
    exit(1)

df['time_ms'] = pd.to_numeric(df['time_ms'], errors='coerce')
df = df.dropna(subset=['time_ms', 'version', 'format'])
df['version'] = df['version'].astype(str)

palette = {
    'raw': 'blue',
    'csv': 'orange',
    'text': 'green',
}

sns.set(style="whitegrid")

box_plot = sns.boxplot(
    x='version',
    y='time_ms',
    hue='format',
    data=df,
    palette=palette,
    width=0.6
)

plt.xlabel('Version', fontsize=12)
plt.ylabel('Time (ms)', fontsize=12)
plt.title('Time Distribution by Format and Version', fontsize=14)
plt.legend(title='Format', fontsize=10, title_fontsize=11)
plt.tight_layout()

plt.show()
