2026-10-31 23:36:28 +02:00
#import numpy as np
from matplotlib import pyplot as plt
for i in range ( 1 , 4 ):
exec ( f "data { i } = list(zip(*[x for x in [[float(j) for j in k.strip().split(',')] for k in open( \" data { i } .csv \" ).read().split( \"\\ n \" )[1:] if k] if x[1] <= 1200]))" )
for i in range ( 5 ):
title = "S,D,D_avg,T,C" . split ( ',' )[ i ]
plt . cla ()
plt . figure ( figsize = ( 17 / 1.3 , 11.2 / 1.3 ))
plt . title ( title )
plt . plot ( data1 [ 1 ], data1 [ i + 3 ])
plt . plot ( data2 [ 1 ], data2 [ i + 3 ])
plt . plot ( data3 [ 1 ], data3 [ i + 3 ])
plt . legend ( labels = [ "Кільце" , "Дерево" , "Решітка" ])
plt . xlim ( 0 , 1100 )
plt . tight_layout ()
2026-10-31 23:38:41 +02:00
#plt.show()
plt . savefig ( f "diagram- { title } .svg" , format = 'svg' )
2026-10-31 23:36:28 +02:00
splits = 0 , 55 , 240 , 1100
vsss = []
smas = []
for i in range ( 3 ):
def get_avgs ( d ):
s = tuple ( zip ( * [ j for j in zip ( * d ) if j [ 1 ] >= splits [ i ] and j [ 1 ] < splits [ i + 1 ]]))
vs = []
for v in range ( 5 ):
vs . append ( sum ( s [ v + 3 ]) / len ( s [ v + 3 ]))
print ( round ( vs [ - 1 ], 7 ), end = " " )
print ()
return vs
vss = []
print ( f "Range { splits [ i ] } - { splits [ i + 1 ] } " )
for x in range ( 3 ):
exec ( f "vss.append(get_avgs(data { x + 1 } ))" )
vals = list ( zip ( * vss ))
print ( "Normed:" )
t = []
for v in vals :
m = min ( v )
t . append ([ x / m for x in v ])
print ([ round ( x , 5 ) for x in t [ - 1 ]])
t = zip ( * t )
print ( "Sigmas:" )
smas . append ([])
for v in t :
smas [ - 1 ] . append ( sum ( v ))
print ( round ( smas [ - 1 ][ - 1 ], 5 ), end = " " )
print ()
print ()
vsss . append ( vss )
dsas = { i : v for i , v in zip ([ f "Діапазон { i + 1 } " for i in range ( 3 )], smas )}
print ( dsas )
plt . cla ()
plt . figure ( figsize = ( 17 / 1.4 , 17 / 1.4 ))
plt . grouped_bar ( dsas , bar_spacing = 0.25 , tick_labels = [ "Кільце" , "Дерево" , "Решітка" ])
plt . legend ()
plt . tight_layout ()
#plt.show()
plt . savefig ( "histogram.svg" , format = "svg" )