Matplotlibbers,

While I though this would be fairly
easy, I've yet to find a decent solution.  I'm interested in using the
RangeSelector or standard zoom feature along with an autoscaling
function.  In the example below there are two gaussian profiles created
in a matrix.  I would like to have the behavior in which when I zoom in
that the Z scale is reordered to account for the new range of data.  Is
my only solution to take the limits returned by a RangeSelector event
and extract a sub-matix from the original data and replot each time I
zoom in or out or is there a more elegant solution?  Is there a way to also 
extend such functionality to contour, pcolor, etc.?



Cheers,



Brian




######paste in ipython###########################################


from numpy import *


from matplotlib.widgets import RectangleSelector


import pylab as P


def gaussian(height, center_x, center_y, width_x, width_y):


    """Returns a gaussian function with the given parameters"""


    width_x = float(width_x)


    width_y = float(width_y)


    return lambda x,y: 
height*exp(-(((center_x-x)/width_x)**2+((center_y-y)/width_y)**2)/2)


def line_select_callback(event1, event2):


    'event1 and event2 are the press and release events'


    x1, y1 = event1.xdata, event1.ydata


    x2, y2 = event2.xdata, event2.ydata


    print "(%3.2f, %3.2f) --> (%3.2f, %3.2f)"%(x1,y1,x2,y2)


    print " The button you used were: ",event1.button, event2.button


        


        


cla()   


# Create the gaussian data


Xin, Yin = mgrid[0:201, 0:201]


Xin2, Yin2 = mgrid[0:201, 0:201]


data = gaussian(20, 100, 100, 20, 40)(Xin, Yin) + random.random(Xin.shape)


data2 = gaussian(10, 10, 10, 2, 4)(Xin2, Yin2) + random.random(Xin.shape)


P.imshow(data+data2, cmap=cm.jet)


current_ax = gca()


LS = RectangleSelector(current_ax, line_select_callback, 
drawtype='box',useblit=True,\


                       minspanx=5,minspany=5,spancoords='pixels')




P.show()


 



      
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to