Le Vendredi 10 Novembre 2006 00:50, vous avez écrit :
> >>>>> "John" == John Hunter <[EMAIL PROTECTED]> writes:
>
>     John> It's not about wx or wxpython, it's a matplotlib issue.
>
> Let me add some color to that statement -- when I took a look at your
> screenshot, I realized you are using the WX backend and not the WXAgg
> backend.  If you don't understand the difference, peruse
> http://matplotlib.sf.net/backends.html .  WXAgg may have the same
> problem (and the same solution from my last post) but will give you
> more consistent rendering and layout.
>
> JDH

Thank you John!!

In fact  WXAgg does not have the same problems. I mean, there is no problem 
with WXAgg and fig.subplots_adjust(left=0.15, bottom=0.15) is even not 
needed! It looks much nicer :
 
http://emmanuelfavrenicolin.free.fr/Public/Divers/Snapshots1/wx_snap1.png

It means that WXAgg is to be the "recommend" way for embedding in wxpython?
Just for reference, a "sample" code derived from dynamic_image_wxagg.py :

#!/usr/bin/env python
import sys, time, os, gc

import matplotlib
matplotlib.use('WXAgg')

from matplotlib import rcParams
rcParams['numerix'] = 'numarray'

import matplotlib.cm as cm

from matplotlib.backends.backend_wxagg import Toolbar, FigureCanvasWxAgg


from matplotlib.figure import Figure
import matplotlib.numerix as numpy
from wxPython.wx import *

TIMER_ID = wxNewId()

class PlotFigure(wxFrame):

    def __init__(self):
        wxFrame.__init__(self, None, -1, "Test embedded wxFigure")

        self.fig = Figure((7,5), 75)
        #self.fig.subplots_adjust(left=0.15, bottom=0.15)
        self.canvas = FigureCanvasWxAgg(self, -1, self.fig)
        self.toolbar = Toolbar(self.canvas)
        self.toolbar.Realize()

        # On Windows, default frame size behaviour is incorrect
        # you don't need this under Linux
        tw, th = self.toolbar.GetSizeTuple()
        fw, fh = self.canvas.GetSizeTuple()
        self.toolbar.SetSize(wxSize(fw, th))

        # Create a figure manager to manage things

        # Now put all into a sizer
        sizer = wxBoxSizer(wxVERTICAL)
        # This way of adding to sizer allows resizing
        sizer.Add(self.canvas, 1, wxLEFT|wxTOP|wxGROW)
        # Best to allow the toolbar to resize!
        sizer.Add(self.toolbar, 0, wxGROW)
        self.SetSizer(sizer)
        self.Fit()
        EVT_TIMER(self, TIMER_ID, self.onTimer)

    def init_plot_data(self):
        # jdh you can add a subplot directly from the fig rather than
        # the fig manager
        a = self.fig.add_subplot(111)
        a.set_title('Title')
        a.set_xlabel('Xaxis [u.a.]')
        a.set_ylabel('Yaxis [u.a.]')
        
#a.xaxis.set_major_formatter(matplotlib.ticker.FormatStrFormatter('%5.2f'))
        
#a.yaxis.set_major_formatter(matplotlib.ticker.FormatStrFormatter('%5.2f'))
        self.ind = numpy.arange(60)
        tmp = []
        for i in range(60):
            tmp.append(numpy.sin((self.ind+i)*numpy.pi/15))
        self.X = numpy.array(tmp)
        self.lines = a.plot(self.X[:,0],'o')
        self.count = 0

    def GetToolBar(self):
        # You will need to override GetToolBar if you are using an 
        # unmanaged toolbar in your frame
        return self.toolbar

    def onTimer(self, evt):
        self.count += 1
        if self.count >= 60: self.count = 0
        self.lines[0].set_data(self.ind, self.X[:,self.count])
        self.canvas.draw()
        #self.canvas.gui_repaint()  # jdh wxagg_draw calls this already

    def onEraseBackground(self, evt):
        # this is supposed to prevent redraw flicker on some X servers...
        pass
        
if __name__ == '__main__':
    app = wxPySimpleApp()
    frame = PlotFigure()
    frame.init_plot_data()
    
    # Initialise the timer - wxPython requires this to be connected to
    # the receiving event handler
    t = wxTimer(frame, TIMER_ID)
    t.Start(100)
    
    frame.Show()
    app.MainLoop()


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to