Kaynağa Gözat

Store received values and plot them with matplotlib

Yentl Van Tendeloo 8 yıl önce
ebeveyn
işleme
3f42bdb90b
1 değiştirilmiş dosya ile 32 ekleme ve 6 silme
  1. 32 6
      interface/CBD/main.py

+ 32 - 6
interface/CBD/main.py

@@ -267,12 +267,38 @@ canvas.bind("<ButtonRelease-3>", release)
 
 visual = Toplevel(root)
 # TODO: https://pythonprogramming.net/how-to-embed-matplotlib-graph-tkinter-gui/
-f = Figure(figsize=(5,5), dpi=100)
-a = f.add_subplot(111)
-a.plot(range(5), [1, 43, 5, 3, 2])
 
-fcanvas = FigureCanvasTkAgg(f, visual)
-fcanvas.show()
-fcanvas.get_tk_widget().pack()
+probes = {}
+values = {}
+
+simulation = [(1, {"a": 1, "b": 2}), (2, {"a": 3}), (3, {"a": 4, "b": 6})]
+
+def update_graphs():
+    while simulation:
+        t, results = simulation.pop(0)
+        for k, v in results.items():
+            if k in probes:
+                fcanvas, a = probes[k]
+            else:
+                f = Figure(figsize=(5,5), dpi=100)
+                a = f.add_subplot(111)
+                a.plot([], [])
+
+                fcanvas = FigureCanvasTkAgg(f, visual)
+                fcanvas.show()
+                fcanvas.get_tk_widget().pack()
+
+                probes[k] = (fcanvas, a)
+                values[k] = ([], [])
+
+            values[k][0].append(t)
+            values[k][1].append(v)
+
+            a.clear()
+            a.plot(values[k][0], values[k][1])
+            fcanvas.draw()
+    root.after(50, update_graphs)
+
+root.after(50, update_graphs)
 
 root.mainloop()