Commit 0bbb747b authored by mario.hock's avatar mario.hock

Merge branch 'master' into 'master'

Axis labels adapt to zoom

Time axis and throughput axis are now adapted to zooming. New command line argument "-nsc" to specify maximum of throughput axis.

See merge request !1

Patch provided by: Michael Herzog <michael.herzog2@student.kit.edu>
parents 1f207d8b e953c703
......@@ -112,7 +112,7 @@ def plot_net(ax, cnl_file, args, layout):
smooth = args.smooth_net
# axes
ax.set_ylim(0,10**10)
ax.set_ylim(top=args.net_scale)
ax.set_ylabel('Throughput (Bit/s)', fontsize=layout.fontsize.axis_labels)
plot(ax, cnl_file.x_values, cnl_file.cols, cnl_file.net_col_names, cnl_file.net_col_names, alpha,
......@@ -182,6 +182,7 @@ if __name__ == "__main__":
DEFAULT_OPACITY = 0.7
DEFAULT_ALPHA = 0.1 # alpha for ema, the smaller the smoother
DEFAULT_Y_RANGE = 10 ** 10
parser = argparse.ArgumentParser()
......@@ -204,6 +205,9 @@ if __name__ == "__main__":
metavar="ALPHA",
help = "Smooth transmission rates with exponential moving average. (Disabled by default. When specified without parameter: ALPHA=0.1)" )
parser.add_argument("-nsc", "--net-scale", type=float, default=DEFAULT_Y_RANGE,
help="[Bit]; Default: 0,10**10")
# TODO make mutual exclusive
parser.add_argument("-sr", "--send-receive", action="store_true",
......@@ -239,8 +243,7 @@ if __name__ == "__main__":
# axes
args.x_minutes = True
args.y_10G = True
args.adapt_net_yticks = True
num_files = len(args.files)
name_suggestor = NameSuggestor()
......@@ -353,8 +356,8 @@ if __name__ == "__main__":
if ( args.x_minutes ):
ax_net.xaxis.set_major_locator( plot_ticks.TimeLocator() )
ax_net.xaxis.set_major_formatter( matplotlib.ticker.FuncFormatter(plot_ticks.format_xticks_minutes) )
if ( args.y_10G ):
ax_net.yaxis.set_major_formatter( matplotlib.ticker.FuncFormatter(plot_ticks.format_yticks_10G) )
if ( args.adapt_net_yticks ):
ax_net.yaxis.set_major_formatter(matplotlib.ticker.FuncFormatter(plot_ticks.format_yticks))
## Set the default format for the save-button to "PDF".
try:
......
......@@ -8,7 +8,7 @@
#
# Author: Mario Hock
import math
import matplotlib.ticker as ticker
from cnl_library import human_readable_from_seconds
......@@ -101,11 +101,11 @@ class TimeLocator(ticker.Locator):
locs.append(pos)
pos -= nice_step
# needs to much space
## Add an additional (still nice) max label, if appropriate.
additional_max_tick = self._make_nice(vmax, 0.25 * nice_step)
if ( additional_max_tick - max(locs) >= 0.5 * nice_step ):
locs.append(additional_max_tick)
#additional_max_tick = self._make_nice(vmax, 0.25 * nice_step)
#if ( additional_max_tick - max(locs) >= 0.5 * nice_step ):
# locs.append(additional_max_tick)
return self.raise_if_exceeds(locs)
......@@ -133,8 +133,28 @@ def format_xticks_time(x, pos=None):
return human_readable_from_seconds(float(x))
def format_xticks_minutes(x, pos=None):
return "0" if x == 0 else "{:.0f}min".format(float(x)/60)
def format_yticks_10G(y, pos=None):
return "0" if y == 0 else "{:.0f}G ".format(y / 1000000000)
if x == 0:
return "0"
elif 0 < x < 60:
return "{:.0f}s".format(x)
elif 60 <= x < 3600:
if (x%60 != 0.):
return "{:.0f}".format(math.floor(x/60.))+".{:.0f}min".format(x%60.)
else:
return "{:.0f}min".format(x/60)
else:
if (x%3600 != 0.):
return "{:.0f}".format(math.floor(x/3600.))+":{:.0f}h".format(x%3600./60.)
else:
return "{:.0f}h".format(x/3600.)
return "{:.0f}h".format(x/3600)
def format_yticks(y, pos=None):
if y < 1000:
return "{:.0f} ".format(float(y) / 1)
elif 1000 <= y < 1000000:
return "{:.0f}K ".format(float(y) / 1000)
elif 1000000 <= y < 1000000000:
return "{:.0f}M ".format(float(y) / 1000000)
else:
return "{:.0f}G ".format(float(y) / 1000000000)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment