-
Notifications
You must be signed in to change notification settings - Fork 0
/
plot-json.py
45 lines (36 loc) · 1.66 KB
/
plot-json.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import json
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.ion()
fig, axs = plt.subplots(3, 3, figsize=(32, 12))
line_width = 1
with open('output.json', 'r') as outfile:
data = json.load(outfile)
names = ['X', 'Y', 'Z']
index = 0
for timestamp in data['timestamp']:
if timestamp > 20.3:
break
index += 1
for i in range(0, 3):
axs[0][i].plot(data['timestamp'][index:], list(map(lambda x: x[i], data['acceleration'][index:])),
label="Acceleration " + names[i],
color=plt.cm.Set1(0), linewidth=line_width)
axs[1][i].plot(data['timestamp'][index:], list(map(lambda x: x[i], data['velocity'][index:])),
label="Velocity " + names[i],
color=plt.cm.Set1(1), linewidth=line_width)
axs[2][i].plot(data['timestamp'][index:], list(map(lambda x: x[i], data['position'][index:])),
label="Position " + names[i],
color=plt.cm.Set1(2), linewidth=line_width)
[axs[ii][i].legend() for ii in range(0, len(axs))]
axis_min_limit = .5
y_lim_accel_bottom, y_lim_accel_top = axs[0][i].get_ylim()
if y_lim_accel_bottom > -axis_min_limit:
axs[0][i].set_ylim(bottom=-axis_min_limit)
if y_lim_accel_top < axis_min_limit:
axs[0][i].set_ylim(top=axis_min_limit)
axs[0][i].set_ylabel('Acceleration [m$\cdot$s$^{-2}$]', fontsize=16)
axs[1][i].set_ylabel('Velocity [m$\cdot$s$^{-1}$]', fontsize=16)
axs[2][i].set_ylabel('Displacement [m]', fontsize=16)
axs[2][i].set_xlabel('Time [s]', fontsize=18)
plt.show()