77 lines
2.1 KiB
Python
77 lines
2.1 KiB
Python
import subprocess
|
|
import tempfile
|
|
import re
|
|
import matplotlib.pyplot as plt
|
|
from collections import defaultdict
|
|
import argparse
|
|
from math import log2
|
|
import pandas as pd
|
|
|
|
|
|
|
|
parser = argparse.ArgumentParser(description='Read data from a data file and plot this.')
|
|
|
|
parser.add_argument('--data_file', action='store', dest='data_file', default='plot_data.txt',
|
|
help='The desired data to be plotted.')
|
|
parser.add_argument('--static_n', action='store_true',
|
|
help="Is the n variable static in the data file?")
|
|
parser.add_argument('--static_step', action='store_true',
|
|
help="Is the step variable static in the data file?")
|
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
data = open(args.data_file).read()
|
|
|
|
|
|
# d = {'static variable' : {step : time, step : time}}
|
|
|
|
|
|
def prep_data(static_var, data):
|
|
non_static_var = (static_var + 1) % 2 # if 0 then 1, if 1 then 0
|
|
#non_static_var = 1 - static_var #rip :(
|
|
|
|
lines = data.split('\n')
|
|
static_vars = set()
|
|
|
|
data = defaultdict(dict)
|
|
|
|
for line in lines[0:-1]:
|
|
all_vars = re.findall(r"\d+", line)
|
|
|
|
static = int(all_vars[static_var])
|
|
non_static = int(all_vars[non_static_var])
|
|
time = int(all_vars[2])
|
|
|
|
static_vars.add(static)
|
|
data[static][non_static] = time
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
static_var = 0 if args.static_n else 1
|
|
plot_data = prep_data(static_var, data)
|
|
df = pd.DataFrame(data=plot_data)
|
|
print(df)
|
|
|
|
plt.imshow(df, cmap='hot')
|
|
plt.show()
|
|
|
|
|
|
#first = plot_data[list(plot_data.keys())[2]]
|
|
|
|
#plt.plot(first[0], first[1])
|
|
|
|
#for static, plotting_data in plot_data.items():
|
|
# x_axis = [log2(x) for x in plotting_data[0]]
|
|
# plt.plot(x_axis, plotting_data[1], marker="o", label = static)
|
|
|
|
|
|
#plt.xticks([2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26], ["$log2(2^2)$", "log2(2^4)", "log2(2^6)", "log2(2^8)", "log2(2^10)", "log2(2^12)", "log2(2^14)", "log2(2^16)", "log2(2^18)", "log2(2^20)", "log2(2^22)", "log2(2^24)", "log2(2^26)"])
|
|
#plt.legend(loc=1, borderaxespad=0.)
|
|
#plt.ylabel('time/ms')
|
|
#plt.xlabel('log(step)')
|
|
#plt.show()
|