event bug in polar axes

I have come across an odd bug in PolarAxes event handling. If one creates a polar axes, then attempts to do a zoom action (is this even allowed?), and then attempts to do a pan (is this even allowed?), errors get thrown. Digging deeper, I noticed that the error being thrown is from “drag_zoom”, which is odd because the current action should be drag_pan. Note that this bug only occurs if a zoom was attempted prior to a pan. Tracing the code execution, I can see that drag_pan does get called before drag_zoom, which leads me to suspect that the callbacks were never disconnected.

I don’t have enough experience in this area to get much further. Can anybody else figure out why the interactive panning and zooming are not working for polar plots? There does appear to be code for that purpose, but nothing happens for either. Maybe it is linked to this bug? Maybe some code point is being skipped that would connect and disconnect the proper callbacks? I am not sure what is going on here. I have attached a really simple script to create a polar plot for others to test this out.

Note: I am using GTKAgg backend.

Steps to reproduce:

  1. Run script
  2. Click on zoom button.
  3. Click anywhere inside the polar plot (dragging is not needed).
  4. Click on pan button
  5. Click and drag inside the polar plot.

Ben Root

polar_plot_zoomtest.py (276 Bytes)

  I have come across an odd bug in PolarAxes event

handling. If one creates a polar axes, then attempts to do a zoom
action (is this even allowed?), and then attempts to do a pan (is
this even allowed?), errors get thrown.
Rubber-band zooming is not allowed, but panning is. Panning mode
allows for zooming (sounds counter-intuitive in English, but it
makes more sense in the interface that way). That mode also allows
for dragging the r-labels.
Digging deeper, I noticed that the error being
thrown is from “drag_zoom”, which is odd because the current
action should be drag_pan. Note that this bug only occurs if a
zoom was attempted prior to a pan. Tracing the code execution, I
can see that drag_pan does get called before drag_zoom, which
leads me to suspect that the callbacks were never disconnected.
Quite possibly. I wrote the polar panning code – but never tested
this interaction with rubber-band zooming, because the latter isn’t
supposed to do anything anyway.

  I don't have enough experience in this area to get much further. 

Can anybody else figure out why the interactive panning and
zooming are not working for polar plots? There does appear to be
code for that purpose, but nothing happens for either. Maybe it
is linked to this bug? Maybe some code point is being skipped
that would connect and disconnect the proper callbacks? I am not
sure what is going on here. I have attached a really simple
script to create a polar plot for others to test this out.
I was able to confirm this and will look into it further.

Cheers,

Mike
···

http://p.sf.net/sfu/SAP-dev2dev


Matplotlib-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Should be fixed in r8778, r8779.

Mike
···

http://p.sf.net/sfu/SAP-dev2dev


Matplotlib-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/matplotlib-develhttp://p.sf.net/sfu/SAP-dev2dev


Matplotlib-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Thanks, that seems to do the trick. What is it that one can do anyway
with this pan/zoom mode? All I seem to be able to do is move the
labeling for the radial distance.

Thanks,
Ben

···

On Monday, November 8, 2010, Michael Droettboom <mdroe@...31...> wrote:

    Should be fixed in r8778, r8779.

    Mike

    On 11/08/2010 11:13 AM, Michael Droettboom wrote:

      On 11/08/2010 10:34 AM, Benjamin Root wrote:
      I have come across an odd bug in PolarAxes event
        handling. If one creates a polar axes, then attempts to do a
        zoom action (is this even allowed?), and then attempts to do a
        pan (is this even allowed?), errors get thrown.
      Rubber-band zooming is not allowed, but panning is. Panning mode
      allows for zooming (sounds counter-intuitive in English, but it
      makes more sense in the interface that way). That mode also
      allows for dragging the r-labels.
       Digging deeper, I noticed that the error being
        thrown is from "drag_zoom", which is odd because the current
        action should be drag_pan. Note that this bug only occurs if a
        zoom was attempted prior to a pan. Tracing the code execution,
        I can see that drag_pan does get called before drag_zoom, which
        leads me to suspect that the callbacks were never disconnected.

      Quite possibly. I wrote the polar panning code -- but never
      tested this interaction with rubber-band zooming, because the
      latter isn't supposed to do anything anyway.

        I don't have enough experience in this area to get much
        further. Can anybody else figure out why the interactive
        panning and zooming are not working for polar plots? There does
        appear to be code for that purpose, but nothing happens for
        either. Maybe it is linked to this bug? Maybe some code point
        is being skipped that would connect and disconnect the proper
        callbacks? I am not sure what is going on here. I have
        attached a really simple script to create a polar plot for
        others to test this out.

      I was able to confirm this and will look into it further.

      Cheers,
      Mike

        Note: I am using GTKAgg backend.

        Steps to reproduce:
        1. Run script
        2. Click on zoom button.
        3. Click anywhere inside the polar plot (dragging is not
        needed).
        4. Click on pan button
        5. Click and drag inside the polar plot.

        Ben Root

------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper
David G. Thomson, author of the best-selling book "Blueprint to a
Billion" shares his insights and actions to help propel your
business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper
David G. Thomson, author of the best-selling book "Blueprint to a
Billion" shares his insights and actions to help propel your
business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Right mouse button zooms the radial axis, analogously to how the right mouse button zooms axes in a rectilinear plot.

Mike

···

On 11/08/2010 09:38 PM, Benjamin Root wrote:

Thanks, that seems to do the trick. What is it that one can do anyway
with this pan/zoom mode? All I seem to be able to do is move the
labeling for the radial distance.