wxPython problem: Can't assign size of plot.PlotCanvas

Kaipo Chang@Taiwan decomposer17179 at gmail.com
Wed Apr 28 09:13:26 EDT 2010


I wrought something like
client = plot.PlotCanvas(childFrame2, 2,pos=(300,400),size=(100,200),
name=text1)
But the plotcanvas kept filling all the childFrame.
Is there a way to Really adjust the size of ploscanvas?
Thanks in advance for your help.

The problematic code is below:

class FrameWithAButton(wx.Frame):
    def __init__(self, parent, id, title, list=[]):
        wx.Frame.__init__(self, parent, id ,title, size=(500,200))
        self.data = xyList
        self.xList = []
        self.yList = []
        for (x,y) in self.data:
            self.xList.append(x)
            self.yList.append(y)
        panel = wx.Panel(self, -1)
        wx.Button(panel, 1, 'scatter', (10,10))
        wx.Button(panel, 2, 'regression line with scatter', (10,40))
        self.Bind(wx.EVT_BUTTON, self.on_scatter, id=1)
        self.Bind(wx.EVT_BUTTON, self.on_line, id=2)

    def on_scatter(self, event):
        """Plot the points in xyList.

        """
        childFrame1 = wx.Frame(self, -1, 'scatter', size=(800,600))
        client = plot.PlotCanvas(childFrame1)
        markers = plot.PolyMarker(self.data, legend='Zipf\'s law',
colour='red', size=1)
        gc = plot.PlotGraphics([markers], 'Scatter', 'logr', 'logf')
        client.Draw(gc, xAxis=(0,9), yAxis = (0,10))
        childFrame1.Show(True)

    def on_line(self, event):
        """Plot the points and draw the regression line out of xList and
            yList, inside a Plot Canvas panel;

        """
        #Succeded in making the graph, but failed to set the position of
PlotCanvas.
        #The pos=(300,400) just did not work! kaipo 2010/04/28 19:20
        (meanX, meanY, betaZero, betaOne, sumYY) = cal_beta(self.xList,
self.yList)
        childFrame2 = wx.Frame(self, -1, 'regression line with scatter',
size=(800,600))
        text1="logf = %.03f" %betaZero +" %.03f logr" %betaOne
        client = plot.PlotCanvas(childFrame2, 2,
pos=(300,400),size=(100,200), name=text1)
        regLine = plot.PolyLine([(0.0, betaZero),
((0.0-(betaZero/betaOne)), 0.0)],width=1, colour='blue')
        markers = plot.PolyMarker(self.data, legend='Zipf\'s law',
colour='red', size=1)
        gc = plot.PlotGraphics([markers, regLine], text1, 'logr', 'logf')
        client.Draw(gc, xAxis=(0,15), yAxis = (0,12))
        childFrame2.Show(True)



More information about the Python-list mailing list