dear list,
can someone tell me why I don't see anything when I run this script?
it is a modified version of the traits example...
I expected to see three plots with one line each...
from enthought.traits.api import HasTraits, Instance, Range, Array,
on_trait_change, Property,cached_property, Bool
from enthought.traits.ui.api import View, Item
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg
from matplotlib.backends.backend_wx import NavigationToolbar2Wx
from matplotlib.figure import Figure
from matplotlib.axes import Axes
from matplotlib.lines import Line2D
from enthought.traits.ui.api import CustomEditor
import wx
import numpy
def MakePlot(parent, editor):
fig = editor.object.figure
panel = wx.Panel(parent, -1)
canvas = FigureCanvasWxAgg(panel, -1, fig)
toolbar = NavigationToolbar2Wx(canvas)
toolbar.Realize()
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(canvas,1,wx.EXPAND|wx.ALL,1)
sizer.Add(toolbar,0,wx.EXPAND|wx.ALL,1)
panel.SetSizer(sizer)
canvas.SetMinSize((300,600))
return panel
class PlotModel(HasTraits):
figure = Instance(Figure, ())
axes1 = Instance(Axes)
axes2 = Instance(Axes)
axes3 = Instance(Axes)
line1 = Instance(Line2D)
line2 = Instance(Line2D)
line3 = Instance(Line2D)
_draw_pending = Bool(False) #a flag to throttle the redraw rate
# a variable parameter
x = Array(value=numpy.arange(1, 31))
x2 = Array(value=numpy.arange(1, 31))
x3 = Array(value=numpy.arange(1, 31))
# a dependent variable
y = Array(value=numpy.arange(1, 31))
y2 = Array(value=numpy.arange(1, 31))
y3 = Array(value=numpy.arange(1, 31))
traits_view = View(
Item('figure',
editor=CustomEditor(MakePlot),
resizable=True,
show_label=False),
resizable=False,
width=400,
height=750
)
def _axes1_default(self):
return self.figure.add_subplot(311)
def _axes2_default(self):
return self.figure.add_subplot(312)
def _axes3_default(self):
return self.figure.add_subplot(313)
def _line1_default(self):
return self.axes1.plot(self.x, self.y)[0]
def _line2_default(self):
return self.axes2.plot(self.x2, self.y2)[0]
def _line3_default(self):
return self.axes3.plot(self.x3, self.y3)[0]
def redraw(self):
if self._draw_pending:
return
canvas = self.figure.canvas
if canvas is None:
return
def _draw():
canvas.draw()
self._draw_pending = False
wx.CallLater(50, _draw).Start()
self._draw_pending = True
if __name__=="__main__":
model = PlotModel()
model.configure_traits(model.redraw())
thank you,
simone