On Fri, Nov 5, 2010 at 8:07 AM, Aman Thakral <aman.thak...@gmail.com> wrote: > Hi, > > The best way to do this is to use a generator: > > import itertools > import matplotlib.pyplot as plt > import numpy as np > > def _ncycle(iterable,n): > """ > Method to create a generator from an iterable. It keeps the > current position of the iterable in memory. Each time the > next() method for the iterable is called, it will return the > next item. If there are no more items, it will cycle to the > first item. > """ > > for item in itertools.cycle(iterable): > yield item > > colors = _ncycle(('r','g','b','c','y','m','k'),1) > markers = _ncycle(('o','s','v'),1)
I like the thought, but I'm not sure why you're making it so complicated by wrapping it. itertools.cycle by itself is perfect, and there's no reason to prime it by calling next() before the plot. The following is a bit more succint IMO: import itertools import matplotlib.pyplot as plt import numpy as np colors = itertools.cycle(['r','g','b','c','y','m','k']) markers = itertools.cycle(['o','s','v']) fig = plt.figure() ax = fig.add_subplot(111) for i in range(10): x = np.linspace(0, 2*np.pi) y = np.sin(x) + np.random.randn(*x.shape) ax.plot(x, y, c=colors.next(), marker=markers.next()) plt.show() Also, you can avoid calling colors.next() and markers.next() if you put them in a zip command along with range(). Ryan -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma ------------------------------------------------------------------------------ The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now! http://p.sf.net/sfu/SAP-dev2dev _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users