Selaa lähdekoodia

Add initial version of pyplot visualizer

Yentl Van Tendeloo 7 vuotta sitten
vanhempi
commit
6975cff831
1 muutettua tiedostoa jossa 58 lisäystä ja 0 poistoa
  1. 58 0
      interface/simple_plot/main.py

+ 58 - 0
interface/simple_plot/main.py

@@ -0,0 +1,58 @@
+import matplotlib.pyplot as plt
+import json
+from matplotlib.animation import FuncAnimation
+import threading
+
+def read_data():
+    try:
+        return json.load(open("/tmp/values.pickle", 'r'))
+    except:
+        return (0.0, {})
+
+def write_data(values):
+    json.dump(values, open("/tmp/values.pickle", 'w'))
+
+old_time, d = read_data()
+l = raw_input()
+time, key, value = l.split(" ")
+time = float(time)
+value = float(value)
+
+if time <= old_time:
+    # Overwrites current values, so flush
+    d = {}
+
+d.setdefault(key, []).append((time, value))
+
+fig, ax = plt.subplots()
+line, = ax.plot([], [])
+
+try:
+    def update_data():
+        while 1:
+            l = raw_input()
+            plt.clf()
+            time, key, value = l.split(" ")
+            time = float(time)
+            value = float(value)
+            d.setdefault(key, []).append((time, value))
+
+            keys = []
+            for key in d:
+                plt.plot([i[0] for i in d[key]], [i[1] for i in d[key]])
+                keys.append(key)
+            plt.legend(keys)
+
+    def update_value(i):
+        pass
+
+    thrd = threading.Thread(target=update_data)
+    thrd.daemon = True
+    thrd.start()
+
+    ani = FuncAnimation(fig, update_value, interval=1)
+    plt.show()
+
+except:
+    print("Writing data...")
+    write_data((time, d))