Hello Stefanie, I think the problem is that you try to initialise a subplot with subplot(112) which is not possible, because the first to numbers in 112 define the subplot structure / geometry (here 1 by 1) and the last number give the index of the subplot. In general you could use N x M (N rows and M columns) for subplots by subplot(N,M,index) where 'index' would be a number between 1 and N * M.
best regards Matthias On Wednesday 13 May 2009 14:02:57 Stefanie Lück wrote: > Hello! > > I'm trying to draw several plots on after the other in a wxScrolledPanel > but I got the error message: > > Traceback (most recent call last): > File "D:\Eigene Datein\Python\current\RNAiscan\Test\sample.py", line 96, > in <m odule> > frame = MyFrame() > File "D:\Eigene Datein\Python\current\RNAiscan\Test\sample.py", line 56, > in __ init__ > self.plot_data(self.fig) > File "D:\Eigene Datein\Python\current\RNAiscan\Test\sample.py", line 90, > in pl ot_data > a = figure.add_subplot(id) > File "C:\python25\lib\site-packages\matplotlib\figure.py", line 689, in > add_su bplot > a = subplot_class_factory(projection_class)(self, *args, **kwargs) > File "C:\python25\lib\site-packages\matplotlib\axes.py", line 7207, in > __init_ _ > raise ValueError( 'Subplot number exceeds total subplots') > ValueError: Subplot number exceeds total subplots > > Here's my code: > > # -*- coding: latin1 -*- > import sys > > import wx > import wx.lib.scrolledpanel as SP > from wx.lib.mixins.listctrl import CheckListCtrlMixin > > from matplotlib.backends.backend_wx import FigureCanvasWx > from matplotlib.figure import Figure > import matplotlib.numerix as numpy > > from pylab import array, arange, sin, cos, exp, pi, randn, normpdf, > meshgrid, \ convolve > > d = {1: (' Contig5535', '230 '), 2: (' Contig5534', '3240 '), 3: (' test', > '574')} > > class CheckListCtrl(wx.ListCtrl, CheckListCtrlMixin): > def __init__(self, parent): > wx.ListCtrl.__init__(self, parent, -1, > style=wx.LC_REPORT|wx.LC_VRULES|wx.LC_HRULES|wx.LC_SORT_ASCENDING) > CheckListCtrlMixin.__init__(self) > self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated) > > def OnItemActivated(self, evt): > self.ToggleItem(evt.m_itemIndex) > > def OnCheckItem(self, index, flag): > data = self.GetItemData(index) > title = d[data][1] > if flag: > what = "checked" > else: > what = "unchecked" > > class MyFrame(wx.Frame): > > def __init__(self): > wx.Frame.__init__(self, None, -1, "My Frame", size=(300, 300)) > self.panel = SP.ScrolledPanel(self, -1) > > self.list = CheckListCtrl(self.panel) > self.list.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL)) > > vbox = wx.BoxSizer(wx.VERTICAL) > > self.fig = Figure() > self.canvas = FigureCanvasWx(self.panel, -1, self.fig) > self.plot_data(self.fig) > vbox.Add(self.list,0, wx.EXPAND) > vbox.Add(self.canvas, 1, wx.LEFT|wx.TOP|wx.GROW) > > self.panel.SetSizer(vbox) > self.panel.SetAutoLayout(1) > self.panel.SetupScrolling() > > self.list.InsertColumn(0, "ID") > self.list.InsertColumn(1, "Nr. of Hits") > for key, data in d.iteritems(): > index = self.list.InsertStringItem(sys.maxint, data[0]) > self.list.SetStringItem(index, 1, data[1]) > #self.list.SetStringItem(index, 2, data[2]) > self.list.SetItemData(index, key) > self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE) > self.list.SetColumnWidth(1, 100) > self.Show() > > def plot_data(self, figure): > liste2 = ['Contig5535_range.txtcounts.txt', > 'Contig5534_range.txtcounts.txt'] id = 111 > > for q in liste2: > f = open(q, 'r') > data = f.readlines() > liste3 = [] > liste4 = [] > for line in data: > line = line.strip() > x = line.split(" ") > liste3.append(int(x[0])) > liste4.append(int(x[1])) > > a = figure.add_subplot(id) > a.plot(liste3,liste4) > id = id + 1 > > if __name__ == '__main__': > app = wx.PySimpleApp() > frame = MyFrame() > frame.Show(True) > app.MainLoop() > > Has someone an idea how to solve this? > Thank in advance > Stefanie ------------------------------------------------------------------------------ The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users