From: Ping Yeh <ping.nsr.yeh@gm...>  20070905 10:09:36

Hello, Thanks to quick hints/tips from Eric and Lionel, I have a module for conditional plotting and histogramming without defining a table type! It works with numerical arrays quite well, but does not work on string arrays in conditions. I paste the code below since they are quite short. Hope that's not considered spam on this list. :) cheers and thanks, Ping from pylab import * def __prepare(arg): cond = arg[1] indices = find(cond) toplot = [] atype = type(array([0,1])) for vec in arg[:1]: if type(vec) == type(""): toplot.append(vec) if type(vec) == atype: toplot.append(array([vec[i] for i in indices])) return toplot def cplot(*arg, **kw): '''Make a conditional plot. Example: cplot(t, x, y > 3) => a plot of { (t[i],x[i])  y[i] > 3} cplot(x, y > 3) => a plot of { (i,x[i])  y[i] > 3} The condition string can have multiple conditions joined by logical operators &  ^. All keyword arguments are passed intact to plot(). ''' toplot = __prepare(arg) return plot(*toplot, **kw) def chist(*arg, **kw): '''Make a conditional histogram. Example: chist(x, y > 3) => a histogram plot of {x[i]  y[i] > 3} The condition string can have multiple conditions joined by logical operators &  ^. All keyword arguments are passed intact to hist(). ''' toplot = __prepare(arg) return hist(*toplot, **kw) def testcplot(): t = arange(0,1.0, 0.01) x = sin(t*2*pi) y = exp(t/0.5) plot(t, x) plot(t, y) cplot(t, x, "o", y<0.2) if __name__ == '__main__': testcplot() 