Hi, I may be wrong, but arent these already examples of what you trying to
show here?:

http://matplotlib.sourceforge.net/examples/pylab_examples/line_collection2.html
http://matplotlib.sourceforge.net/examples/pylab_examples/ellipse_collection.html

if you use a collection you can quickly setup the colors of all your
elements..by just passing an array....

jimmy


John [H2O] wrote:
> 
> Just curious if you're interested in folks contributing to the gallery. I
> was playing around trying to come up with a routine to automatically
> choose colors when plotting several datasets, not necessarily from a
> single array, but rather say iterating through a list of datasets. I came
> up with the following... maybe it's of interest?  And certainly of
> interest to me... any advice on what could be done better!
> 
> Thanks!
> 
> 
> 
>> #!/usr/bin/env python
>> 
>> import numpy as np
>> import matplotlib.pyplot as plt
>> import matplotlib.cm as cm
>> import matplotlib.colors as colors
>> 
>> """A script to demonstrate automatically assigning colors based
>> on the number of x,y pairs to be plotted. """
>> 
>> # First example
>> # set up some example data
>> x = np.random.random((430,23))
>> 
>> # This is the important part for 'autocoloring'
>> # get an array of 0-1 values, length of numint (#data sets
>> # that you will iterate through), these will define the colors
>> numint = x.shape[1]
>> Nc = np.array([float(i)/numint for i in range(numint)])
>> norm = colors.normalize(Nc.min(),Nc.max())
>> 
>> fig = plt.figure()
>> ax = fig.add_subplot(111)
>> interval = 0
>> for i in range(numint):
>>     #get a new color
>>     cmap = cm.jet(norm(Nc[i]))
>>     ax.scatter(x[:,0],x[:,i],color=cmap)
>> 
>> 
>> # Second example
>> # something a little more interesting
>> fig2 = plt.figure()
>> ax2 = fig2.add_subplot(111)
>> X = np.arange(400)
>> y = np.sin(X)
>> y2 = X*.2
>> x = np.column_stack((y,y2))
>> 
>> #define an interval, the dataset is divided by this value
>> intervalsize = 23
>> numint = int(np.round(x.shape[0]/intervalsize)) + 1
>> 
>> # This is the important part for 'autocoloring'
>> # get an array of 0-1 values, length of numint
>> # these will define the colors
>> Nc = np.array([float(i)/numint for i in range(numint)])
>> norm = colors.normalize(Nc.min(),Nc.max())
>> 
>> interval = 0
>> for i in range(0,len(x),intervalsize):
>>     # define the index array (easier than typing)
>>     indx = np.arange(i,i+intervalsize)
>>     #get a new color
>>     cmap = cm.jet(norm(Nc[interval]))
>>     # the indx as defined above may exceed
>>     # the data array
>>     try:
>>         ax2.scatter(x[indx,0],x[indx,1],color=cmap)
>>         #print indx
>>     # case to handle tail of data
>>     except:
>>         #plt.scatter(x[i:,0],x[i:,1],color=cmap)
>>         print 'OOPS, index exceeds dimensions:',indx
>>         pass
>>     # so that you don't miss the last interval
>>     if len(x)-i < intervalsize:
>>         ax2.scatter(x[i+1:,0],x[i+1:,1],color=cmap)
>>         print 'last bits...'
>>     interval+=1
>> 
>> plt.show()
>> 
> 

-- 
View this message in context: 
http://www.nabble.com/contribute-to-gallery--Or%2C-just-advice-on-changing-colors-automagically....-tp24419101p24427289.html
Sent from the matplotlib - users mailing list archive at Nabble.com.


------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to