# SPDX-License-Identifier: GPL-2.0 # # Copyright (C) 2019, VMware Inc, Tzvetomir Stoyanov # Copyright (C) 2019, VMware Inc, Yordan Karadzhov 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()