hmmm... in response to John's earlier request I cobbled a simple example but that seems to work; either there's a strange error in the more complex version or my misunderstanding of color maps is messing with me. Anyway, for the record, here's an example of what I want to do (that actually seems to work)
------------------------------------------------------------------------------------ #!/usr/bin/env python # Example to try and use same color maps for scatter and imshow import numpy as np from pylab import * # size of array dimensions size = 10 # cluster centers acenter1 = 3.0 asigma1 = 1.0 bcenter1 = 6.0 bsigma1 = 0.5 acenter2 = 8.0 asigma2 = 2.0 bcenter2 = 3.0 bsigma2 = 1.0 acenter3 = 13.0 asigma3 = 2.0 bcenter3 = 10.0 bsigma3 = 1.0 # populate arrays with random values distrubted about 2 locations # (i.e. 2 clusters) a = np.zeros([size,size],float) b = np.zeros([size,size],float) c = np.zeros([size,size],int) # populate arrays for i in range(size): for j in range(size): switcher = np.random.randint(3) if switcher == 0: # cluster 1 a[i,j] = np.random.normal(acenter1,asigma1) b[i,j] = np.random.normal(bcenter1,bsigma1) c[i,j] = 0 elif switcher == 1 : # cluster 2 a[i,j] = np.random.normal(acenter2,asigma2) b[i,j] = np.random.normal(bcenter2,bsigma2) c[i,j] = 1 else: a[i,j] = np.random.normal(acenter3,asigma3) b[i,j] = np.random.normal(bcenter3,bsigma3) c[i,j] = 2 hot() subplot(1,2,1) scatter(np.ravel(a),np.ravel(b),c=np.ravel(c)) subplot(1,2,2) imshow(c) show() ------------------------------------------------------------------------------------ > Young, Karl wrote: > >> Thanks for the tip and sorry I didn't include a complete code >> snippet; the current code involves images (scipy.ndimage) and >> clustering code and I thought that was a little too much too include; >> I'll try to extract something simpler. I guess the main question is >> how to use a set of integers to index a color space consistently for >> both scatter and imshow but I'll try to come up with a simple >> example. Thanks agan. >> >> > > Karl, > > It sounds like you need to specify the norm=colors.NoNorm() argument. > http://matplotlib.sourceforge.net/api/colors_api.html?highlight=nonorm#matplotlib.colors.NoNorm > Then if your data are integers (typed as integers, not just taking > integer values), they will be interpreted as indices into the color > table. You will probably also want to generate that table yourself and > specify it via the cmap=my_cmap kwarg. If you have only a few values, > then you may want to generate it as a colors.ListedColormap: > http://matplotlib.sourceforge.net/api/colors_api.html?highlight=listedcolormap#matplotlib.colors.ListedColormap > http://matplotlib.sourceforge.net/examples/api/colorbar_only.html?highlight=listedcolormap > > It looks like we don't have any good examples sitting around showing the > use of NoNorm; but try it anyway. > > Eric > > . > > ------------------------------------------------------------------------------ OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users