1*58e6ee5fSAndroid Build Coastguard Worker# SPDX-License-Identifier: GPL-2.0 2*58e6ee5fSAndroid Build Coastguard Worker# 3*58e6ee5fSAndroid Build Coastguard Worker# Copyright (C) 2019, VMware Inc, Tzvetomir Stoyanov <[email protected]> 4*58e6ee5fSAndroid Build Coastguard Worker# Copyright (C) 2019, VMware Inc, Yordan Karadzhov <[email protected]> 5*58e6ee5fSAndroid Build Coastguard Worker 6*58e6ee5fSAndroid Build Coastguard Worker 7*58e6ee5fSAndroid Build Coastguard Workerimport matplotlib.pyplot as plt 8*58e6ee5fSAndroid Build Coastguard Workerimport matplotlib.lines as mlines 9*58e6ee5fSAndroid Build Coastguard Workerimport numpy as np 10*58e6ee5fSAndroid Build Coastguard Workerimport sys 11*58e6ee5fSAndroid Build Coastguard Worker 12*58e6ee5fSAndroid Build Coastguard Workerdef newline(p1, p2): 13*58e6ee5fSAndroid Build Coastguard Worker ax = plt.gca() 14*58e6ee5fSAndroid Build Coastguard Worker xmin, xmax = ax.get_xbound() 15*58e6ee5fSAndroid Build Coastguard Worker 16*58e6ee5fSAndroid Build Coastguard Worker if(p2[0] == p1[0]): 17*58e6ee5fSAndroid Build Coastguard Worker xmin = xmax = p1[0] 18*58e6ee5fSAndroid Build Coastguard Worker ymin, ymax = ax.get_ybound() 19*58e6ee5fSAndroid Build Coastguard Worker else: 20*58e6ee5fSAndroid Build Coastguard Worker ymax = p1[1]+(p2[1]-p1[1])/(p2[0]-p1[0])*(xmax-p1[0]) 21*58e6ee5fSAndroid Build Coastguard Worker ymin = p1[1]+(p2[1]-p1[1])/(p2[0]-p1[0])*(xmin-p1[0]) 22*58e6ee5fSAndroid Build Coastguard Worker 23*58e6ee5fSAndroid Build Coastguard Worker l = mlines.Line2D([xmin,xmax], [ymin,ymax], color='red') 24*58e6ee5fSAndroid Build Coastguard Worker ax.add_line(l) 25*58e6ee5fSAndroid Build Coastguard Worker return l 26*58e6ee5fSAndroid Build Coastguard Worker 27*58e6ee5fSAndroid Build Coastguard Workerdata = np.loadtxt(fname = sys.argv[1]) 28*58e6ee5fSAndroid Build Coastguard Workerx = data[:, 0] 29*58e6ee5fSAndroid Build Coastguard Workery = data[:, 1] 30*58e6ee5fSAndroid Build Coastguard Worker 31*58e6ee5fSAndroid Build Coastguard Workerfig, ax = plt.subplots() 32*58e6ee5fSAndroid Build Coastguard Worker 33*58e6ee5fSAndroid Build Coastguard Workerax.set_xlabel('samples (t)') 34*58e6ee5fSAndroid Build Coastguard Workerax.set_ylabel('clock offset') 35*58e6ee5fSAndroid Build Coastguard Workerax.set_title("$\delta$=%i ns" % (max(y) - min(y))) 36*58e6ee5fSAndroid Build Coastguard Worker 37*58e6ee5fSAndroid Build Coastguard Workerl = mlines.Line2D(x, y) 38*58e6ee5fSAndroid Build Coastguard Workerax.add_line(l) 39*58e6ee5fSAndroid Build Coastguard Workerax.set_xlim(min(x), max(x)) 40*58e6ee5fSAndroid Build Coastguard Workerax.set_ylim(min(y), max(y) ) 41*58e6ee5fSAndroid Build Coastguard Worker 42*58e6ee5fSAndroid Build Coastguard Workerprint(min(y), max(y), max(y) - min(y)) 43*58e6ee5fSAndroid Build Coastguard Worker 44*58e6ee5fSAndroid Build Coastguard Worker# Tweak spacing to prevent clipping of ylabel 45*58e6ee5fSAndroid Build Coastguard Workerfig.tight_layout() 46*58e6ee5fSAndroid Build Coastguard Workerplt.show() 47