From 1304e1ba4c723e255019a2990612906790f47bca Mon Sep 17 00:00:00 2001 From: Tibor Frank Date: Wed, 14 Nov 2018 13:14:53 +0100 Subject: [PATCH] Report: Changes in graphs layout Change-Id: Ied97ef11be4d6b3e08f2e54d868e36da9e73ab85 Signed-off-by: Tibor Frank --- docs/report/introduction/report_history.rst | 2 + resources/tools/presentation/generator_plots.py | 77 +++++++++++++++++++------ resources/tools/presentation/specification.yaml | 8 +-- 3 files changed, 65 insertions(+), 22 deletions(-) diff --git a/docs/report/introduction/report_history.rst b/docs/report/introduction/report_history.rst index e6fb910678..afe0fd6937 100644 --- a/docs/report/introduction/report_history.rst +++ b/docs/report/introduction/report_history.rst @@ -4,6 +4,8 @@ Report History +---------+--------------------------------------------------------------------+ | Version | Change | +=========+====================================================================+ +| 1.2 | - Add automatic wrapping of long test names in graphs | ++---------+--------------------------------------------------------------------+ | 1.1 | - Add dot1q KVM VMs vhost-user tests to the VPP performance | | | graphs. | | | - Add the information about the number of runs used to generate | diff --git a/resources/tools/presentation/generator_plots.py b/resources/tools/presentation/generator_plots.py index 0f660999dd..03cee06cb0 100644 --- a/resources/tools/presentation/generator_plots.py +++ b/resources/tools/presentation/generator_plots.py @@ -144,11 +144,21 @@ def plot_performance_box(plot, input_data): df.head() y_max = list() for i, col in enumerate(df.columns): - name = "{0}. {1} ({2} run{3})".\ - format(i + 1, - col.lower().replace('-ndrpdr', ''), - nr_of_samples[i], - 's' if nr_of_samples[i] > 1 else '') + name = "{0}. {1}".format(i + 1, col.lower().replace('-ndrpdr', '')) + if len(name) > 60: + name_lst = name.split('-') + name = "" + split_name = True + for segment in name_lst: + if (len(name) + len(segment) + 1) > 60 and split_name: + name += "
" + split_name = False + name += segment + '-' + name = name[:-1] + name = "{name} ({samples} run{plural})".\ + format(name=name, + samples=nr_of_samples[i], + plural='s' if nr_of_samples[i] > 1 else '') logging.debug(name) traces.append(plgo.Box(x=[str(i + 1) + '.'] * len(df[col]), y=[y / 1000000 if y else None for y in df[col]], @@ -287,13 +297,23 @@ def plot_latency_error_bars(plot, input_data): y_maxs = list() nr_of_samples = list() for key, val in y_sorted.items(): - key = "-".join(key.split("-")[1:-1]) - x_vals.append(key) # dir 1 + name = "-".join(key.split("-")[1:-1]) + if len(name) > 60: + name_lst = name.split('-') + name = "" + split_name = True + for segment in name_lst: + if (len(name) + len(segment) + 1) > 60 and split_name: + name += "
" + split_name = False + name += segment + '-' + name = name[:-1] + x_vals.append(name) # dir 1 y_vals.append(mean(val[1]) if val[1] else None) y_mins.append(mean(val[0]) if val[0] else None) y_maxs.append(mean(val[2]) if val[2] else None) nr_of_samples.append(len(val[1]) if val[1] else 0) - x_vals.append(key) # dir 2 + x_vals.append(name) # dir 2 y_vals.append(mean(val[4]) if val[4] else None) y_mins.append(mean(val[3]) if val[3] else None) y_maxs.append(mean(val[5]) if val[5] else None) @@ -309,9 +329,9 @@ def plot_latency_error_bars(plot, input_data): for idx in range(len(x_vals)): if not bool(int(idx % 2)): - direction = "West - East" + direction = "West-East" else: - direction = "East - West" + direction = "East-West" hovertext = ("Test: {test}
" "Direction: {dir}
" "No. of Runs: {nr}
".format(test=x_vals[idx], @@ -320,7 +340,7 @@ def plot_latency_error_bars(plot, input_data): if isinstance(y_maxs[idx], float): hovertext += "Max: {max:.2f}uSec
".format(max=y_maxs[idx]) if isinstance(y_vals[idx], float): - hovertext += "Avg: {avg:.2f}uSec
".format(avg=y_vals[idx]) + hovertext += "Mean: {avg:.2f}uSec
".format(avg=y_vals[idx]) if isinstance(y_mins[idx], float): hovertext += "Min: {min:.2f}uSec".format(min=y_mins[idx]) @@ -467,6 +487,16 @@ def plot_throughput_speedup_analysis(plot, input_data): try: if test_vals["1"][1]: name = "-".join(test_name.split('-')[1:-1]) + if len(name) > 60: + name_lst = name.split('-') + name = "" + split_name = True + for segment in name_lst: + if (len(name) + len(segment) + 1) > 60 and split_name: + name += "
" + split_name = False + name += segment + '-' + name = name[:-1] vals[name] = dict() y_val_1 = test_vals["1"][0] / 1000000.0 @@ -664,7 +694,7 @@ def plot_throughput_speedup_analysis(plot, input_data): for idx in range(len(val["val"])): htext = "" if isinstance(val["val"][idx], float): - htext += "Value: {0:.2f}Mpps
" \ + htext += "Mean: {0:.2f}Mpps
" \ "No. of Runs: {1}
".format(val["val"][idx], val["count"][idx]) if isinstance(val["diff"][idx], float): @@ -697,7 +727,7 @@ def plot_throughput_speedup_analysis(plot, input_data): color=COLORS[cidx], width=2, dash="dash"), - text=["perfect: {0:.2f}Mpps".format(y) + text=["Perfect: {0:.2f}Mpps".format(y) for y in val["ideal"]], hoverinfo="text" )) @@ -774,11 +804,22 @@ def plot_http_server_performance_box(plot, input_data): df = pd.DataFrame(y_vals) df.head() for i, col in enumerate(df.columns): - name = "{0}. {1} ({2} run{3})".\ - format(i + 1, - col.lower().replace('-cps', '').replace('-rps', ''), - nr_of_samples[i], - 's' if nr_of_samples[i] > 1 else '') + name = "{0}. {1}".format(i + 1, col.lower().replace('-ndrpdr', '')) + if len(name) > 60: + name_lst = name.split('-') + name = "" + split_name = True + for segment in name_lst: + if (len(name) + len(segment) + 1) > 60 and split_name: + name += "
" + split_name = False + name += segment + '-' + name = name[:-1] + name = "{name} ({samples} run{plural})".\ + format(name=name, + samples=nr_of_samples[i], + plural='s' if nr_of_samples[i] > 1 else '') + traces.append(plgo.Box(x=[str(i + 1) + '.'] * len(df[col]), y=df[col], name=name, diff --git a/resources/tools/presentation/specification.yaml b/resources/tools/presentation/specification.yaml index d1acd9ff2f..b9f438fb2d 100644 --- a/resources/tools/presentation/specification.yaml +++ b/resources/tools/presentation/specification.yaml @@ -669,7 +669,7 @@ font: size: 16 width: 700 - height: 800 + height: 850 plot-throughput-speedup-analysis: titlefont: @@ -742,14 +742,14 @@ xanchor: "left", yanchor: "top", x: 0, - y: -0.125, + y: -0.13, font: { family: "Consolas, Courier New", size: 15 }, }, { - text: " perfect measured limit", + text: " Perfect Measured Limit", align: "left", showarrow: False, xref: "paper", @@ -757,7 +757,7 @@ xanchor: "left", yanchor: "top", x: 0, - y: -0.14, + y: -0.15, font: { family: "Consolas, Courier New", size: 15 -- 2.16.6