From: Dominique O. <Dom...@po...> - 2005-01-17 23:28:32
|
John Hunter wrote: >>>>>>"Dominique" == Dominique Orban <Dom...@po...> writes: > > > Dominique> I notice some spurious zigzagging lines towards the top > Dominique> of the plot. Any idea where those might be coming from? > > I don't get zigzag lines either. Try using replacing > matplotlib.axes.Axes.contour with the function included below (from > CVS) and let me know if it works. > > Dominique> Also, the figure produced by the above script is > Dominique> flipped horizontally. The corresponding Matlab script > Dominique> produces the correct plot. > > matplotlib supports two image / contour orientation styles, and this > is controlled by an rc parameter. Try (note the origin kwarg) > > from matplotlib.pylab import * > > def rosenbrock(x,y): > return 10.0 * (y-x**2)**2 + (x-1)**2 > > x = arange( -1.5, 1.5, 0.01 ) > y = arange( -0.5, 1.5, 0.01 ) > [X,Y] = meshgrid( x, y ) > Z = rosenbrock( X, Y ) > contour( Z, x=X, y=Y, levels = 50, origin='lower' ) > show() > > > Amended contour function > [snip] John, Many thanks for the update. That solves some of the issues. The 'origin' keyword argument restores the orientation of the plot. To account for the 'x' and 'y' keyword arguments, I would suggest changing the lines if x == None and y == None: y, x = indices((jmax,imax), 'd') to if x is None: x = indices((jmax,imax), 'd') if y is None: y = indices((jmax,imax), 'd') to account for the situation where only one of x or y is specified (I admit that might be unlikely but hey). Regarding the zigzags, I notice they appear for relatively small values of the increment in arange() (the 3rd argument). When I decrease it to, say, 0.1, zigzags start to appear. For higher values, they don't. It makes me think they might be part of the line collections. Is anyone else able to reproduce this behavior? Thanks much. Dominique |