Added Lambda for PlotData
This commit is contained in:
parent
a17630ad57
commit
31046f0a87
64
plotView.py
Normal file
64
plotView.py
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: UTF-8 -*-
|
||||||
|
#
|
||||||
|
# generated by wxGlade 1.0.2 on Sun Jul 4 21:23:20 2021
|
||||||
|
#
|
||||||
|
|
||||||
|
import wx
|
||||||
|
|
||||||
|
# begin wxGlade: dependencies
|
||||||
|
# end wxGlade
|
||||||
|
|
||||||
|
# begin wxGlade: extracode
|
||||||
|
# end wxGlade
|
||||||
|
import matplotlib.cm as cm
|
||||||
|
import matplotlib.cbook as cbook
|
||||||
|
from matplotlib.backends.backend_wxagg import (
|
||||||
|
FigureCanvasWxAgg as FigureCanvas,
|
||||||
|
NavigationToolbar2WxAgg as NavigationToolbar,
|
||||||
|
)
|
||||||
|
from matplotlib.figure import Figure
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
|
LOGGER = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
|
class PlotPanel(wx.Panel):
|
||||||
|
def __init__(self, parent, model, plotLambda, updateLambda):
|
||||||
|
super().__init__(parent, -1)
|
||||||
|
|
||||||
|
self.plotLambda = plotLambda
|
||||||
|
self.updateLambda = updateLambda
|
||||||
|
|
||||||
|
self.model = model
|
||||||
|
self.fig = Figure((15, 10), 75)
|
||||||
|
self.canvas = FigureCanvas(self, -1, self.fig)
|
||||||
|
self.toolbar = NavigationToolbar(self.canvas) # matplotlib toolbar
|
||||||
|
self.toolbar.Realize()
|
||||||
|
# Now put all into a sizer
|
||||||
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
|
# This way of adding to sizer allows resizing
|
||||||
|
sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
|
||||||
|
# Best to allow the toolbar to resize!
|
||||||
|
sizer.Add(self.toolbar, 0, wx.GROW)
|
||||||
|
self.SetSizer(sizer)
|
||||||
|
self.Fit()
|
||||||
|
self.Bind(wx.EVT_PAINT, self.on_paint, self)
|
||||||
|
self.ax = self.fig.add_subplot()
|
||||||
|
self.fig.legend()
|
||||||
|
(self.im,) = self.plotLambda(self.ax,self.model.plot_data.data)
|
||||||
|
self.toolbar.update() # Not sure why this is needed - ADS
|
||||||
|
|
||||||
|
def get_toolbar(self):
|
||||||
|
# You will need to override GetToolBar if you are using an
|
||||||
|
# unmanaged toolbar in your frame
|
||||||
|
return self.toolbar
|
||||||
|
|
||||||
|
def on_paint(self, event):
|
||||||
|
dat = self.model.plot_data.data
|
||||||
|
self.updateLambda(self.im, dat)
|
||||||
|
self.ax.relim()
|
||||||
|
self.ax.autoscale_view()
|
||||||
|
self.canvas.draw()
|
||||||
|
event.Skip()
|
60
view.py
60
view.py
@ -22,7 +22,7 @@ from matplotlib.backends.backend_wxagg import (
|
|||||||
NavigationToolbar2WxAgg as NavigationToolbar,
|
NavigationToolbar2WxAgg as NavigationToolbar,
|
||||||
)
|
)
|
||||||
from matplotlib.figure import Figure
|
from matplotlib.figure import Figure
|
||||||
|
from plotView import PlotPanel
|
||||||
|
|
||||||
logging.basicConfig(level=logging.DEBUG)
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
LOGGER = logging.getLogger()
|
LOGGER = logging.getLogger()
|
||||||
@ -32,49 +32,6 @@ LOGGER = logging.getLogger()
|
|||||||
|
|
||||||
# begin wxGlade: extracode
|
# begin wxGlade: extracode
|
||||||
# end wxGlade
|
# end wxGlade
|
||||||
class PlotPanel(wx.Panel):
|
|
||||||
def __init__(self, parent, model):
|
|
||||||
super().__init__(parent, -1)
|
|
||||||
self.model = model
|
|
||||||
self.fig = Figure((15, 10), 75)
|
|
||||||
self.canvas = FigureCanvas(self, -1, self.fig)
|
|
||||||
self.toolbar = NavigationToolbar(self.canvas) # matplotlib toolbar
|
|
||||||
self.toolbar.Realize()
|
|
||||||
# Now put all into a sizer
|
|
||||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
|
||||||
# This way of adding to sizer allows resizing
|
|
||||||
sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
|
|
||||||
# Best to allow the toolbar to resize!
|
|
||||||
sizer.Add(self.toolbar, 0, wx.GROW)
|
|
||||||
self.SetSizer(sizer)
|
|
||||||
self.Fit()
|
|
||||||
self.Bind(wx.EVT_PAINT, self.on_paint, self)
|
|
||||||
self.ax = None
|
|
||||||
self.im = None
|
|
||||||
self.init_plot_data()
|
|
||||||
self.x = self.y = None
|
|
||||||
|
|
||||||
def init_plot_data(self):
|
|
||||||
self.ax = self.fig.add_subplot()
|
|
||||||
self.fig.legend()
|
|
||||||
dat = self.model.plot_data
|
|
||||||
(self.im,) = self.ax.plot(dat.get("keks"), dat.get("temp"), "-o", label="temp")
|
|
||||||
self.toolbar.update() # Not sure why this is needed - ADS
|
|
||||||
|
|
||||||
def get_toolbar(self):
|
|
||||||
# You will need to override GetToolBar if you are using an
|
|
||||||
# unmanaged toolbar in your frame
|
|
||||||
return self.toolbar
|
|
||||||
|
|
||||||
def on_paint(self, event):
|
|
||||||
dat = self.model.plot_data.data
|
|
||||||
# print(self.x)
|
|
||||||
|
|
||||||
self.im.set_data(dat.get("keks"), dat.get("temp"))
|
|
||||||
self.ax.relim()
|
|
||||||
self.ax.autoscale_view()
|
|
||||||
self.canvas.draw()
|
|
||||||
event.Skip()
|
|
||||||
|
|
||||||
|
|
||||||
class MyFrame(wx.Frame):
|
class MyFrame(wx.Frame):
|
||||||
@ -128,11 +85,18 @@ class MyFrame(wx.Frame):
|
|||||||
self.tabs = wx.Notebook(self.panel_1, wx.ID_ANY)
|
self.tabs = wx.Notebook(self.panel_1, wx.ID_ANY)
|
||||||
grid_sizer_main.Add(self.tabs, (0, 1), (1, 1), wx.EXPAND, 0)
|
grid_sizer_main.Add(self.tabs, (0, 1), (1, 1), wx.EXPAND, 0)
|
||||||
|
|
||||||
self.plot_1 = PlotPanel(self.tabs, self.model)
|
|
||||||
self.tabs.AddPage(self.plot_1, "x vs y")
|
|
||||||
|
|
||||||
self.plot_2 = PlotPanel(self.tabs, self.model)
|
plot = lambda ax, dat: ax.plot(dat["time"], dat["temp"])
|
||||||
self.tabs.AddPage(self.plot_2, "x vs z")
|
update = lambda im, dat: im.set_data(dat["time"], dat["temp"])
|
||||||
|
self.plot_1 = PlotPanel(self.tabs, self.model, plot, update)
|
||||||
|
self.tabs.AddPage(self.plot_1, "Temp")
|
||||||
|
|
||||||
|
plot = lambda ax, dat: ax.plot(dat["time"], dat["multi"])
|
||||||
|
update = lambda im, dat: im.set_data(dat["time"], dat["multi"])
|
||||||
|
self.plot_2 = PlotPanel(self.tabs, self.model, plot, update)
|
||||||
|
self.tabs.AddPage(self.plot_2, "Multi")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
grid_sizer_3 = wx.GridBagSizer(10, 0)
|
grid_sizer_3 = wx.GridBagSizer(10, 0)
|
||||||
grid_sizer_main.Add(grid_sizer_3, (0, 2), (2, 1), wx.EXPAND, 0)
|
grid_sizer_main.Add(grid_sizer_3, (0, 2), (2, 1), wx.EXPAND, 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user