Newer
Older
from global_types.parametric.ParametricGlobalTypes import ParametricKinds
Felix Stutz
committed
import numpy as np
import matplotlib.pyplot as plt
CUTOFF_X = 1000
CUTOFF_Y = 20
SMALL_SIZE = 12
FONT_SIZE = 16
LEGEND_SIZE = 14
LINE_WIDTH = 4
ALPHA = 1
def output_plot(num_size, all_eval_folder_path, where_to_save=None):
Felix Stutz
committed
set_up_plot(num_size)
add_plots_from_folder(all_eval_folder_path, True)
add_plots_from_folder(all_eval_folder_path, False)
finish_plot(where_to_save)
Felix Stutz
committed
def set_up_plot(cutoff_x):
plt.rc('font', size=FONT_SIZE) # controls default text sizes
plt.rc('axes', titlesize=FONT_SIZE) # fontsize of the axes title
plt.rc('axes', labelsize=FONT_SIZE) # fontsize of the x and y labels
plt.rc('xtick', labelsize=SMALL_SIZE) # fontsize of the tick labels
plt.rc('ytick', labelsize=SMALL_SIZE) # fontsize of the tick labels
plt.rc('legend', fontsize=LEGEND_SIZE) # legend fontsize
plt.xlim([0, cutoff_x])
plt.plot([], [], 'yellow', label="mem_cache", linewidth=LINE_WIDTH)
plt.plot([], [], 'green', label="tree_broadcast", linewidth=LINE_WIDTH)
plt.plot([], [], 'purple', label="p2p_broadcast", linewidth=LINE_WIDTH)
plt.plot([], [], 'orange', label="map_reduce", linewidth=LINE_WIDTH)
plt.plot([], [], 'black', linestyle='--', label="lazy evaluation_data", linewidth=LINE_WIDTH)
Felix Stutz
committed
plt.plot([], [], 'black', linestyle=':', label="no avail. check", linewidth=LINE_WIDTH)
def add_plots_from_folder(folder_path, avail_check): # folder_path contains "evaluation_*_timestamp/"
Felix Stutz
committed
folder_name_avail = "/optional_avail/" if avail_check else "/no_avail/"
map_reduce_mapping = folder_path + "map_reduce" + folder_name_avail + "/a_mapping_map_reduce.txt"
mem_cache_mapping = folder_path + "mem_cache" + folder_name_avail + "/a_mapping_mem_cache.txt"
p2p_broadcast_mapping = folder_path + "p2p_broadcast" + folder_name_avail + "/a_mapping_p2p_broadcast.txt"
tree_broadcast_mapping = folder_path + "tree_broadcast" + folder_name_avail + "/a_mapping_tree_broadcast.txt"
# 1
line_option = 2 if avail_check else 1
add_to_plot(folder_path + "map_reduce" + folder_name_avail + "/a_summary_map_reduce.txt", line_option, 12, 5, map_reduce_mapping)
add_to_plot(folder_path + "mem_cache" + folder_name_avail + "/a_summary_mem_cache.txt", line_option, 12, 3, mem_cache_mapping)
add_to_plot(folder_path + "p2p_broadcast" + folder_name_avail + "/a_summary_p2p_broadcast.txt", line_option, 12, 4, p2p_broadcast_mapping)
add_to_plot(folder_path + "tree_broadcast" + folder_name_avail + "/a_summary_tree_broadcast.txt", line_option, 12, 6, tree_broadcast_mapping)
def finish_plot(where_to_save):
plt.ylabel("time in s")
plt.xlabel("size")
plt.legend(loc='best')
if where_to_save is not None:
plt.savefig(where_to_save, format='pdf', bbox_inches='tight')
else:
plt.show()
Felix Stutz
committed
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
plt.clf()
def add_to_plot(filename, line_option, line_period, color_option, size_mapping_file):
data = np.loadtxt(filename)
param = data[:, 0]
time = [x/1000 for x in data[:, 1]]
time = list(filter(lambda x: x <= 60 * 10, time))
size_mapping = np.loadtxt(size_mapping_file)
param = size_mapping[:, 1] # we assume that the param are the same
# we limit the axis now
# param = list(filter(lambda x: x <= CUTOFF_SIZE, param))
min_dim = min(len(time), len(param))
param = param[:min_dim]
time = time[:min_dim]
if color_option == 1:
param_color = 'red'
line_offset = 0
elif color_option == 2:
param_color = 'blue'
line_offset = line_period / 3
elif color_option == 3:
param_color = 'yellow'
line_offset = 2 * line_period / 3
elif color_option == 4:
param_color = 'purple'
line_offset = 0
elif color_option == 5:
param_color = 'orange'
line_offset = line_period / 3
elif color_option == 6:
param_color = 'green'
line_offset = 2 * line_period / 3
if line_option == 1:
plt.plot(param, time, linestyle=':', color=param_color, linewidth=LINE_WIDTH, alpha=ALPHA)
elif line_option == 2:
plt.plot(param, time, linestyle=(line_offset, (line_period/3, 2*line_period/3)), color=param_color, linewidth=LINE_WIDTH, alpha=ALPHA)
elif line_option == 3:
plt.plot(param, time, linestyle='-', color=param_color, linewidth=LINE_WIDTH, alpha=ALPHA)
# plt.plot(param, time, linestyle=(0, (2.5, 0.5)), color=param_color, linewidth=LINE_WIDTH, alpha=ALPHA)
# helper functions
def get_prefix_from_kind(kind):
Felix Stutz
committed
def get_pattern_for_parameter(num):
return "evaluation_" + str(num) + "_*.txt"