Skip to content
Snippets Groups Projects
Commit 8e1adcdc authored by Daniel Meißner's avatar Daniel Meißner Committed by Daniel Meißner
Browse files

script: added more functions to plot data script

parent 09b90591
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python2.7
# -*- encoding: utf-8 -*-
from __future__ import unicode_literals
import numpy as np
import matplotlib.pyplot as plt
import yaml
import sys
import matplotlib.patches as mpatches
import matplotlib.lines as mlines
from matplotlib.legend_handler import HandlerLine2D
# http://mple.m-artwork.eu/home/posts?offset=10
......@@ -9,31 +16,87 @@ if len(sys.argv) != 2:
print("Usage: " + sys.argv[0] + " /path/to/data.yml")
sys.exit(1)
data = None
fig,ax = plt.subplots()
# x range 0-100
x_range = np.arange(0,100,1)
# first one and last one
real_transmission_time = []
# count only ones
transmission_time = []
with open(sys.argv[1], 'r') as stream:
data = yaml.load(stream)
fig,ax = plt.subplots()
x = np.arange(0,101,1)
values = []
for i, var in enumerate(data['signal_blocks']):
values.append(var['real_transmission_time'])
ax.plot(i+1,var['real_transmission_time'], linestyle="None", marker=".", color="red")
# add values to array for later processing
real_transmission_time.append(var['real_transmission_time'])
transmission_time.append(var['transmission_time'])
y_mean = [np.mean(values) for i in x]
y_med = [np.median(values) for i in x]
print(y_mean)
print(y_med)
real_y_mean = [np.mean(real_transmission_time) for i in x_range]
real_y_med = [np.median(real_transmission_time) for i in x_range]
mean_line = ax.plot(x,y_mean, label='Mittwelwert\t' + str(round(y_mean[0],2)) + 'ms', linestyle='--')
mean_line = ax.plot(x,y_med, label='Median\t' + str(round(y_med[0],2)) + 'ms', linestyle='-')
y_mean = [np.mean(transmission_time) for i in x_range]
y_med = [np.median(transmission_time) for i in x_range]
legend = ax.legend(loc='upper right')
real_median_set = False
median_set = False
for i, var in enumerate(data['signal_blocks']):
# plot data points
if var['real_transmission_time'] == np.median(real_transmission_time) and \
real_median_set is False:
real_median_plot = ax.plot(i+1, var['real_transmission_time'],
linestyle="None", marker=".", color="red",
label="Transmission [median]")
real_median_set = True
else:
ax.plot(i+1, var['real_transmission_time'],
linestyle="None", marker="x", color="red")
if var['transmission_time'] == np.median(transmission_time) and \
median_set is False:
median_plot = ax.plot(i+1, var['transmission_time'], linestyle="None",
marker=".", color="blue",
label="Tastgrad [median]")
median_set = True
else:
ax.plot(i+1, var['transmission_time'], linestyle="None",
marker="x", color="blue")
ax.plot(x_range,y_mean, linestyle='--', color="blue")
ax.plot(x_range,real_y_mean, linestyle='--', color="red")
plt.xlabel("Versuch")
plt.ylabel("Frequenzbelegungszeit [ms]")
plt.title(data['tag'])
#plt.title(data['tag'])
# add tick lines for x and y
ax.yaxis.grid(True, which='major')
ax.yaxis.grid(True, which='minor')
ax.xaxis.grid(True, which='major')
ax.xaxis.grid(True, which='minor')
# Create custom artists
tastgrad_legend = plt.Line2D((0,1), (0,0),
color='blue', linestyle="", marker="x")
uebertragung_legend = plt.Line2D((0,1), (0,0),
color='red', linestyle="", marker="x")
median_legend = plt.Line2D((0,1), (0,0),
color='black', marker='o', linestyle='')
avg_legend = plt.Line2D((0,1), (0,0),
color='black', linestyle="--")
# Create legend from custom artist/label lists
ax.legend([uebertragung_legend,tastgrad_legend,median_legend, avg_legend],
['Übertragung','Tastgrad','Median', 'Durchschnitt'],
numpoints=1, loc="best")
ticks = [ round(x, 1) for x in list(plt.yticks()[0]) ]
if 0 in ticks:
ticks.remove(0)
ax.set_yticks(ticks + [y_mean[0], real_y_mean[0]], minor=False)
for spine in ['top', 'right']:
ax.spines[spine].set_visible(False)
plt.savefig('figure.pgf')
plt.show()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment