56 lines
1.2 KiB
Python
56 lines
1.2 KiB
Python
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
import csv
|
|
import math
|
|
|
|
def read_csv(filename):
|
|
data = list()
|
|
header = None
|
|
with open(filename, "r") as file:
|
|
reader = csv.reader(file)
|
|
header = next(reader, None)
|
|
print(header)
|
|
for row in reader:
|
|
data.append([float(d) for d in row])
|
|
|
|
return header, data
|
|
|
|
def main(filename):
|
|
header, data = read_csv(filename)
|
|
|
|
x = [d[0] for d in data]
|
|
y = dict()
|
|
for h in range(1, len(header)):
|
|
y[header[h]] = list()
|
|
|
|
for d in data:
|
|
for idx in range(0, len(d)-1):
|
|
y[header[idx+1]].append(d[idx+1])
|
|
|
|
min_x = min(x)
|
|
max_x = max(x)
|
|
|
|
min_x_tick_power = math.floor(math.log10(min_x))
|
|
max_x_tick_power = math.ceil(math.log10(max_x))
|
|
|
|
xticks = [10**p for p in range(min_x_tick_power, max_x_tick_power)]
|
|
|
|
headers = list()
|
|
for key,value in y.items():
|
|
plt.plot(x, value)
|
|
headers.append(key)
|
|
|
|
plt.legend(["acc={}".format(h) for h in headers])
|
|
|
|
plt.xscale("log")
|
|
plt.grid(True)
|
|
plt.xlabel("Input to sqrt()")
|
|
plt.ylabel("Relative Error")
|
|
#plt.xticks(xticks)
|
|
plt.title("Relative error of sqrt()")
|
|
plt.show()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main("exercise_1_7_data.csv")
|