Am Dienstag, den 21.06.2011, 19:17 -0400 schrieb josef.p...@gmail.com: > On Tue, Jun 21, 2011 at 5:25 PM, Paul Menzel wrote: > > 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. > > each append below corresponds to one call to your draw function > > Do you want to draw all possible routes, or the road network?
I am sorry. I now do understand your previous sentences correctly. Yes I am aware that patches overlap and I only need to draw the road network. > I only see the road network in the plot Yes that is correct and intended. > (and partially the traffic density with alpha<1). Nice suggestion. Thank you. > >> 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
signature.asc
Description: This is a digitally signed message part
------------------------------------------------------------------------------ Simplify data backup and recovery for your virtual environment with vRanger. Installation's a snap, and flexible recovery options mean your data is safe, secure and there when you need it. Data protection magic? Nope - It's vRanger. Get your free trial download today. http://p.sf.net/sfu/quest-sfdev2dev
_______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users