Am Dienstag, den 21.06.2011, 09:43 -0400 schrieb josef.p...@gmail.com:
> On Tue, Jun 21, 2011 at 8:47 AM, Paul Menzel wrote:

> > I want to plot all paths of a simple random walk and wrote the following
> > recursive program based on the Path tutorial [1].
> >
> >        import matplotlib.pyplot as plt
> >        from matplotlib.path import Path
> >        import matplotlib.patches as patches
> >
> >        def draw(a, b, c, d):
> >                        verts = [
> >                        (a, b),
> >                        (c, d),
> >                        (0, 0),
> >                        ]
> >
> >                        codes = [
> >                        Path.MOVETO,
> >                        Path.LINETO,
> >                        Path.CLOSEPOLY
> >                        ]
> >
> >                        path = Path(verts, codes)
> >                        patch = patches.PathPatch(path)
> >                        ax.add_patch(patch)
> >
> >        def irrpfad(a, b):
> >                if a < length:
> >                        draw(a, b, a + 1., b + 1.)
> >                        draw(a, b, a + 1., b - 1.)
> >                        irrpfad(a + 1, b + 1)
> >                        irrpfad(a + 1, b - 1)
> >
> >
> >        length = 5 # 20 not possible to run
> >
> >        fig = plt.figure()
> >        ax = fig.add_subplot(111)
> >        irrpfad(0, 0)
> >        ax.set_xlim(0,length)
> >        ax.set_ylim(-length,length)
> >        plt.show()
> >
> > Using 20 for `length` stalls my system and the memory used seems to be
> > over 1 GB. I guess this is what you guess using something recursive.
> > What optimizations are there. I am drawing each line after another so
> > probably too many separate paths instead of one. Being a Python noob I
> > do not know if I can append something to a path. Looking at the API
> > documentation [2] I did not see such a method.
> >
> > Being also new to Matplotlib I may have also overlooked more appropriate
> > methods/classes.
> >
> > So to summarize my message,
> >
> > 1. How can I add lines to a path?
> > 2. Are recursive functions bad in Python/Matplotlib?
> > 3. Are there better approaches?
> 
> I'm not sure what you are trying to show, but my impression is that you are
> just producing the grid between integers (move up,down),

Yeah, that is about right [1].

> and paths will not show up because the lines are all on top of each other.

That is not true. My program displays everything correctly when using
for example `length = 5`.

> The number of all paths looks very large to me and even without matplotlib
> overhead, this might soon run into problems.

That is what thought too.

> for example;
> for length= 15; I get 65534 moves in the random walks, but only 240 unique 
> moves
> for length= 20; I get 2097150 moves in the random walks, but only 420 unique 
> moves
> plotting only unique moves is fast (count of moves might work to color the
> amount of traffic on each move)

I am sorry, I think that in my program no section is drawn more than
once.

> rw_moves = []
> def irrpfad2(a, b):
>     if a < length:
>         rw_moves.append((a, b, a + 1, b + 1))
>         rw_moves.append((a, b, a + 1, b - 1))
>         irrpfad2(a + 1, b + 1)
>         irrpfad2(a + 1, b - 1)
> 
> length = 20 # 20 not possible to run
> irrpfad2(0, 0)

Thank you for the example, but now I need to somehow also add the codes
to be able to pass this to Path.

> I don't know any answer to the matplotlib specific part

Thank you for your other answers.

> > Please find the source also attached. I am using python-matplotlib
> > 1.0.1-2 from Debian Sid/unstable.


Thanks,

Paul


> > [1] http://matplotlib.sourceforge.net/users/path_tutorial.html
> > [2] http://matplotlib.sourceforge.net/api/path_api.html#matplotlib.path.Path
[3] https://secure.wikimedia.org/wikipedia/en/wiki/Random_walk

Attachment: signature.asc
Description: This is a digitally signed message part

------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to