-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathplot_data.py
More file actions
63 lines (55 loc) · 1.8 KB
/
Copy pathplot_data.py
File metadata and controls
63 lines (55 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
'''
* Copyright (C) 2025 Jacob Davis
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The purpose of this program is to plot the csv data generated from tests
*
'''
import pandas as pd
import matplotlib.pyplot as plt
import glob
from pathlib import Path
# Collects the cubic interpolation files
csv_files = glob.glob('results/*.csv')
csv_files.remove('results/bi_c_data.csv')
# Plots the data
labels = []
times = []
labels = []
times = []
for file in csv_files:
df = pd.read_csv(file)
df = df[(df['Data'] == 400) & (df['Iterations'] == 10000000)]
if not df.empty:
label = Path(file).stem.replace('_data', '')
labels.append(label)
times.append(df['Time'].iloc[0])
# Sorts by time
sorted_pairs = sorted(zip(times, labels))
times, labels = zip(*sorted_pairs)
# Normalizes time values for colormap
cmap = plt.get_cmap('tab20')
colors = [cmap(i % 20) for i in range(len(labels))]
# Plots
plt.figure(figsize=(12, 6))
plt.bar(labels, times, color=colors)
plt.yscale('log')
plt.xlabel('Framework')
plt.ylabel('Time (s)')
plt.title('Execution Time by Framework (|Data| = 400, Iterations = 10⁷)')
plt.xticks(rotation=45, ha='right')
plt.grid(True, axis='y')
plt.tight_layout()
plt.show()