qt4: Transforming to display coordinates

Hi,

I want to implement a cursor on a diagram using native Qt routines. For
this, I would need to transform data (axis) coordinates to display
coordinates.

The manual of matplotlib, API "axes" just jays that there are some
public attributes 'transData' and 'transAxis', but without an
explanation.

So, if I have something like

class DiagramWidget(FigureCanvas):
    def __init__(self, parent):
        fig = Figure()
        self.axes = fig.add_subplot(111)
        self.xlimits = (0, 4000)
        FigureCanvas.__init__(self, fig)
        self.setParent(parent)
        self.mpl_connect('motion_notify_event', self.on_move)

    def on_move(self, event)
        mouse_pos_diag_x = ???(event.xdata)
        mouse_pos_diag_y = ???(event.ydata)
        lower_limit_diag_y = ???
        upper_limit_diag_y = ???
        ...

where I would need to replace the ??? with some transformation from
event.xdata, event.ydata, and the min and max of the y axis. How could I
do that?

Cheers

Ole

setParent(parent)

       self.mpl_connect('motion_notify_event', self.on_move)

   def on_move(self, event)
       mouse_pos_diag_x = ???(event.xdata)
       mouse_pos_diag_y = ???(event.ydata)
       lower_limit_diag_y = ???
       upper_limit_diag_y = ???
       ...

where I would need to replace the ??? with some transformation from
event.xdata, event.ydata, and the min and max of the y axis. How could I
do that?

The mouse event object already has display coords attached in the
event.x and event.y attributes. See

  http://matplotlib.sourceforge.net/api/backend_bases_api.html#matplotlib.backend_bases.LocationEvent

and

  http://matplotlib.sourceforge.net/users/event_handling.html

But to answer your question about matplotlib transforms. You could do

  ax = event.inaxes # the axes the event occurred in
  x, y = ax.transData.transform_point((event.xdata, event.ydata))

and you should get the same answer.
JDH

···

On Thu, Jun 4, 2009 at 8:49 AM, Ole Streicher <ole-usenet-spam@...361...> wrote: