Report: NFV Graphs
[csit.git] / resources / tools / presentation / generator_plots.py
index d1cf728..48af343 100644 (file)
@@ -1431,10 +1431,10 @@ def plot_service_density_heatmap_compare(plot, input_data):
                         if groups and len(groups.groups()) == 3:
                             if str(groups.group(3)) == \
                                     plot["reference"]["include"]:
-                                vals[c][n]["vals_c"].append(result)
+                                vals[c][n]["vals_r"].append(result)
                             elif str(groups.group(3)) == \
                                     plot["compare"]["include"]:
-                                vals[c][n]["vals_r"].append(result)
+                                vals[c][n]["vals_c"].append(result)
                             break
     if not vals:
         logging.error("No data.")
@@ -1513,49 +1513,73 @@ def plot_service_density_heatmap_compare(plot, input_data):
     for c in range(len(txt_chains)):
         hover_line = list()
         for n in range(len(txt_nodes)):
-            if data_r[c][n] is not None:
-                data_point = dict(
-                    x=n+1,
-                    y=c+1,
-                    xref="x",
-                    yref="y",
-                    xanchor="center",
-                    yanchor="middle",
-                    text=str(data_r[c][n]) if data_r[c][n] is not None else "",
-                    font=dict(
-                        size=14,
-                    ),
-                    align="center",
-                    showarrow=False
-                )
-                annotations_r.append(deepcopy(data_point))
-                data_point["text"] = str(data_c[c][n]) \
-                    if data_c[c][n] is not None else ""
-                annotations_c.append(deepcopy(data_point))
-                data_point["text"] = str(diff[c][n]) \
-                    if diff[c][n] is not None else ""
-                annotations_diff.append(deepcopy(data_point))
+            point = dict(
+                x=n + 1,
+                y=c + 1,
+                xref="x",
+                yref="y",
+                xanchor="center",
+                yanchor="middle",
+                text="",
+                font=dict(
+                    size=14,
+                ),
+                align="center",
+                showarrow=False
+            )
 
-                hover_line.append(text.format(
-                    name=vals[txt_chains[c]][txt_nodes[n]]["name"],
-                    title_r=plot["reference"]["name"],
-                    text_r=text_r.format(
-                        val_r=data_r[c][n],
+            point_text_r = "Not present"
+            point_text_c = "Not present"
+            point_text_diff = ""
+            try:
+                point_r = data_r[c][n]
+                if point_r is not None:
+                    point_text_r = text_r.format(
+                        val_r=point_r,
                         stdev_r=vals[txt_chains[c]][txt_nodes[n]]["stdev_r"],
-                        nr_r=vals[txt_chains[c]][txt_nodes[n]]["nr_r"]
-                    ) if data_r[c][n] is not None else "Test Failed",
-                    title_c=plot["compare"]["name"],
-                    text_c=text_c.format(
-                        val_c=data_c[c][n],
-                        stdev_c = vals[txt_chains[c]][txt_nodes[n]]["stdev_c"],
-                        nr_c=vals[txt_chains[c]][txt_nodes[n]]["nr_c"]
-                    ) if data_c[c][n] is not None else "Test Failed",
-                    text_diff=text_diff.format(
+                        nr_r=vals[txt_chains[c]][txt_nodes[n]]["nr_r"])
+            except KeyError:
+                point_r = None
+            point["text"] = "" if point_r is None else point_r
+            annotations_r.append(deepcopy(point))
+
+            try:
+                point_c = data_c[c][n]
+                if point_c is not None:
+                    point_text_c = text_c.format(
+                        val_c=point_c,
+                        stdev_c=vals[txt_chains[c]][txt_nodes[n]]["stdev_c"],
+                        nr_c=vals[txt_chains[c]][txt_nodes[n]]["nr_c"])
+            except KeyError:
+                point_c = None
+            point["text"] = "" if point_c is None else point_c
+            annotations_c.append(deepcopy(point))
+
+            try:
+                point_d = diff[c][n]
+                if point_d is not None:
+                    point_text_diff = text_diff.format(
                         title_r=plot["reference"]["name"],
                         title_c=plot["compare"]["name"],
-                        diff=diff[c][n]
-                    ) if diff[c][n] is not None else ""
-                ))
+                        diff=point_d)
+            except KeyError:
+                point_d = None
+            point["text"] = "" if point_d is None else point_d
+            annotations_diff.append(deepcopy(point))
+
+            try:
+                name = vals[txt_chains[c]][txt_nodes[n]]["name"]
+            except KeyError:
+                continue
+
+            hover_line.append(text.format(
+                name=name,
+                title_r=plot["reference"]["name"],
+                text_r=point_text_r,
+                title_c=plot["compare"]["name"],
+                text_c=point_text_c,
+                text_diff=point_text_diff
+            ))
 
         hovertext.append(hover_line)
 
@@ -1612,7 +1636,9 @@ def plot_service_density_heatmap_compare(plot, input_data):
                      name="Diff",
                      visible=False,
                      colorbar=dict(
-                         title="Relative difference [%]",
+                         title="Relative Difference {name_c} vs. {name_r} [%]".
+                             format(name_c=plot["compare"]["name"],
+                                    name_r=plot["reference"]["name"]),
                          titleside="right",
                          titlefont=dict(
                              size=16