| # SPDX-License-Identifier: GPL-2.0 |
| # |
| # Copyright (C) 2019, VMware Inc, Tzvetomir Stoyanov <[email protected]> |
| # Copyright (C) 2019, VMware Inc, Yordan Karadzhov <[email protected]> |
| |
| |
| import matplotlib.pyplot as plt |
| import matplotlib.lines as mlines |
| import numpy as np |
| import sys |
| |
| def newline(p1, p2): |
| ax = plt.gca() |
| xmin, xmax = ax.get_xbound() |
| |
| if(p2[0] == p1[0]): |
| xmin = xmax = p1[0] |
| ymin, ymax = ax.get_ybound() |
| else: |
| ymax = p1[1]+(p2[1]-p1[1])/(p2[0]-p1[0])*(xmax-p1[0]) |
| ymin = p1[1]+(p2[1]-p1[1])/(p2[0]-p1[0])*(xmin-p1[0]) |
| |
| l = mlines.Line2D([xmin,xmax], [ymin,ymax], color='red') |
| ax.add_line(l) |
| return l |
| |
| |
| data = np.loadtxt(fname = sys.argv[1]) |
| selected_ts = data[-1, 1] |
| selected_ofs = data[-1, 0] |
| data = data[:-1,:] |
| |
| x = data[:, 1] - data[:, 0] |
| |
| mean = x.mean() |
| std = x.std() |
| |
| num_bins = 500 |
| min = x.min() #+ .4 * (x.max() - x.min()) |
| max = x.max() #- .4 * (x.max() - x.min()) |
| bins = np.linspace(min, max, num_bins, endpoint = False, dtype=int) |
| |
| fig, ax = plt.subplots() |
| |
| # the histogram of the data |
| n, bins, patches = ax.hist(x, bins, histtype=u'step'); |
| |
| ax.set_xlabel('clock offset [$\mu$s]') |
| ax.set_ylabel('entries') |
| ax.set_title("$\sigma$=%i" % std) |
| |
| x1, y1 = [selected_ofs, min], [selected_ofs, max] |
| newline(x1, y1) |
| |
| # Tweak spacing to prevent clipping of ylabel |
| fig.tight_layout() |
| plt.show() |