Selecting all the way to the edge of a plot

Hi folks,

I use matplotlib all the time, and one of the features I particularly
like is the interactivity of its plot windows. I like being able to
zoom in to a rectangle. But there's one UI quirk that I find annoying,
and I wonder how difficult it would be to change. Often when I want to
zoom in, I want to change only (say) the upper x and y limits. So I
click at the top right corner I want and drag the mouse all the way
out of the axes, then release, and it zooms in to the right place. But
the UI is misleading: once the mouse leaves the axes, the box that
indicates where I'll be zooming too stops updating, often leaving it
quite far from the actual zoom region (i.e. in this case, not
extending all the way to the corner, even though the zoom will reach
all the way to the corner). The problem is worst when I (say) leave
the axes from the bottom, then reach over horizontally, so that the
last update doesn't represent the width at all.

Would it be possible to keep updating the zoom rectangle even when the
mouse has left the axes?

Thanks,
Anne

I pushed a change into the svn that enables this, but in a different way than you suggested.

The behavior I implemented is similar to the current behavior of the “pan” mode, i.e., if you hold the “x” key pressed during pan/zoom, only the x-axis is updated. Same for “y” key.

I hope this is good for your needs also.

Regards,

-JJ

···

On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aarchiba@…824…> wrote:

Often when I want to

zoom in, I want to change only (say) the upper x and y limits.

Often when I want to
zoom in, I want to change only (say) the upper x and y limits.

I pushed a change into the svn that enables this, but in a different way
than you suggested.
The behavior I implemented is similar to the current behavior of the "pan"
mode, i.e., if you hold the "x" key pressed during pan/zoom, only the x-axis
is updated. Same for "y" key.
I hope this is good for your needs also.

Well, it's an interesting feature, but it doesn't address the problem
I'm seeing.

What I'd like to be able to do is, say, to change only the upper x and
y limits, simply click where I want those limits to be and drag right
off the corner of the plot. This actually works, but when I do this
the drag rectangle freezes the moment my pointer leaves the axes, so
that it does not represent the area being zoomed to.

I've attached a screenshot illustrating the bug. Note where the
pointer is and where the "to be zoomed" rectangle is.

I use Linux, with the default backend, whatever that is.

Anne

Screenshot-3.png

···

On 21 March 2010 18:10, Jae-Joon Lee <lee.j.joon@...149...> wrote:

On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aarchiba@...824...> > wrote:

Regards,
-JJ

I'd like to throw another vote in for this feature as well. We have a lot of cases like this and not being able to zoom to the limits of the window is a real head ache.

Back in the old days (when we were maintaining our own plot library), we solved this by allowing the bounding rectangle to be drawn outside the figure (assuming the mouse started inside the figure). When the mouse is released, the limits are reduced by the current axes values before applying the zoom. Something like:

- mouse click outside the figure - handle like normal
- mouse click inside the figure - start zooming
- mouse drag - draw zoom box
- mouse leaves figure - keep drawing zoom box (change from current havior)
- mouse release - if mouse is outside figure zoom box started in, reduce zoom box to limits of axes (change from current behavior)
- zoom

Hope that helps...

Ted

···

________________________________________
From: Anne Archibald [aarchiba@...824...]
Sent: Sunday, March 21, 2010 3:42 PM
To: Jae-Joon Lee
Cc: matplotlib-devel@lists.sourceforge.net
Subject: Re: [matplotlib-devel] Selecting all the way to the edge of a plot

On 21 March 2010 18:10, Jae-Joon Lee <lee.j.joon@...149...> wrote:

On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aarchiba@...824...> > wrote:

Often when I want to
zoom in, I want to change only (say) the upper x and y limits.

I pushed a change into the svn that enables this, but in a different way
than you suggested.
The behavior I implemented is similar to the current behavior of the "pan"
mode, i.e., if you hold the "x" key pressed during pan/zoom, only the x-axis
is updated. Same for "y" key.
I hope this is good for your needs also.

Well, it's an interesting feature, but it doesn't address the problem
I'm seeing.

What I'd like to be able to do is, say, to change only the upper x and
y limits, simply click where I want those limits to be and drag right
off the corner of the plot. This actually works, but when I do this
the drag rectangle freezes the moment my pointer leaves the axes, so
that it does not represent the area being zoomed to.

I've attached a screenshot illustrating the bug. Note where the
pointer is and where the "to be zoomed" rectangle is.

I use Linux, with the default backend, whatever that is.

Anne

Regards,
-JJ

I'd like to throw another vote in for this feature as well. We have a lot of cases like this and not being able to zoom to the limits of the window is a real head ache.

I'd just like to point out that it's the UI that's deceptive: you can
actually zoom to the edges by doing just what you'd expect, but the
box showing where you're zooming to is wrong.

Anne

···

On 22 March 2010 11:32, Drain, Theodore R (343P) <theodore.r.drain@...179...> wrote:

Back in the old days (when we were maintaining our own plot library), we solved this by allowing the bounding rectangle to be drawn outside the figure (assuming the mouse started inside the figure). When the mouse is released, the limits are reduced by the current axes values before applying the zoom. Something like:

- mouse click outside the figure - handle like normal
- mouse click inside the figure - start zooming
- mouse drag - draw zoom box
- mouse leaves figure - keep drawing zoom box (change from current havior)
- mouse release - if mouse is outside figure zoom box started in, reduce zoom box to limits of axes (change from current behavior)
- zoom

Hope that helps...

Ted
________________________________________
From: Anne Archibald [aarchiba@...824...]
Sent: Sunday, March 21, 2010 3:42 PM
To: Jae-Joon Lee
Cc: matplotlib-devel@lists.sourceforge.net
Subject: Re: [matplotlib-devel] Selecting all the way to the edge of a plot

On 21 March 2010 18:10, Jae-Joon Lee <lee.j.joon@...149...> wrote:

On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aarchiba@...824...> >> wrote:

Often when I want to
zoom in, I want to change only (say) the upper x and y limits.

I pushed a change into the svn that enables this, but in a different way
than you suggested.
The behavior I implemented is similar to the current behavior of the "pan"
mode, i.e., if you hold the "x" key pressed during pan/zoom, only the x-axis
is updated. Same for "y" key.
I hope this is good for your needs also.

Well, it's an interesting feature, but it doesn't address the problem
I'm seeing.

What I'd like to be able to do is, say, to change only the upper x and
y limits, simply click where I want those limits to be and drag right
off the corner of the plot. This actually works, but when I do this
the drag rectangle freezes the moment my pointer leaves the axes, so
that it does not represent the area being zoomed to.

I've attached a screenshot illustrating the bug. Note where the
pointer is and where the "to be zoomed" rectangle is.

I use Linux, with the default backend, whatever that is.

Anne

Regards,
-JJ

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

You're correct - not sure what I was thinking of.

I'm going to claim that it must have been this way in an older version and been fixed to make myself feel better...

···

________________________________________
From: Anne Archibald [peridot.faceted@...149...]
Sent: Monday, March 22, 2010 8:39 AM
To: Drain, Theodore R (343P)
Cc: matplotlib-devel@lists.sourceforge.net
Subject: Re: [matplotlib-devel] Selecting all the way to the edge of a plot

On 22 March 2010 11:32, Drain, Theodore R (343P) <theodore.r.drain@...179...> wrote:

I'd like to throw another vote in for this feature as well. We have a lot of cases like this and not being able to zoom to the limits of the window is a real head ache.

I'd just like to point out that it's the UI that's deceptive: you can
actually zoom to the edges by doing just what you'd expect, but the
box showing where you're zooming to is wrong.

Anne

Back in the old days (when we were maintaining our own plot library), we solved this by allowing the bounding rectangle to be drawn outside the figure (assuming the mouse started inside the figure). When the mouse is released, the limits are reduced by the current axes values before applying the zoom. Something like:

- mouse click outside the figure - handle like normal
- mouse click inside the figure - start zooming
- mouse drag - draw zoom box
- mouse leaves figure - keep drawing zoom box (change from current havior)
- mouse release - if mouse is outside figure zoom box started in, reduce zoom box to limits of axes (change from current behavior)
- zoom

Hope that helps...

Ted
________________________________________
From: Anne Archibald [aarchiba@...824...]
Sent: Sunday, March 21, 2010 3:42 PM
To: Jae-Joon Lee
Cc: matplotlib-devel@lists.sourceforge.net
Subject: Re: [matplotlib-devel] Selecting all the way to the edge of a plot

On 21 March 2010 18:10, Jae-Joon Lee <lee.j.joon@...149...> wrote:

On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aarchiba@...824...> >> wrote:

Often when I want to
zoom in, I want to change only (say) the upper x and y limits.

I pushed a change into the svn that enables this, but in a different way
than you suggested.
The behavior I implemented is similar to the current behavior of the "pan"
mode, i.e., if you hold the "x" key pressed during pan/zoom, only the x-axis
is updated. Same for "y" key.
I hope this is good for your needs also.

Well, it's an interesting feature, but it doesn't address the problem
I'm seeing.

What I'd like to be able to do is, say, to change only the upper x and
y limits, simply click where I want those limits to be and drag right
off the corner of the plot. This actually works, but when I do this
the drag rectangle freezes the moment my pointer leaves the axes, so
that it does not represent the area being zoomed to.

I've attached a screenshot illustrating the bug. Note where the
pointer is and where the "to be zoomed" rectangle is.

I use Linux, with the default backend, whatever that is.

Anne

Regards,
-JJ

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Rectangle selection also kind of bugs out when you reach the edge of the axes. I looked into fixing this a while ago and had a partial solution. The rectangle selector does some inaxes checking and relies on the xdata and ydata values. These are invalid outside the axes, but you can fake it by using the pixel values and a the axes transform. It might be worth adding a parameter to the rectangle selector to allow or disallow the rectangle to go outside of the axes.
-Ben

···

-----Original Message-----
From: Anne Archibald [mailto:peridot.faceted@…149…]
Sent: Monday, March 22, 2010 11:39 AM
To: Drain, Theodore R (343P)
Cc: matplotlib-devel@lists.sourceforge.net
Subject: Re: [matplotlib-devel] Selecting all the way to the edge of a plot

On 22 March 2010 11:32, Drain, Theodore R (343P) <theodore.r.drain@...179...> wrote:

I'd like to throw another vote in for this feature as well. We have a lot of cases like this and not being able to zoom to the limits of the window is a real head ache.

I'd just like to point out that it's the UI that's deceptive: you can
actually zoom to the edges by doing just what you'd expect, but the
box showing where you're zooming to is wrong.

Anne

Back in the old days (when we were maintaining our own plot library), we solved this by allowing the bounding rectangle to be drawn outside the figure (assuming the mouse started inside the figure). When the mouse is released, the limits are reduced by the current axes values before applying the zoom. Something like:

- mouse click outside the figure - handle like normal
- mouse click inside the figure - start zooming
- mouse drag - draw zoom box
- mouse leaves figure - keep drawing zoom box (change from current havior)
- mouse release - if mouse is outside figure zoom box started in, reduce zoom box to limits of axes (change from current behavior)
- zoom

Hope that helps...

Ted
________________________________________
From: Anne Archibald [aarchiba@...824...]
Sent: Sunday, March 21, 2010 3:42 PM
To: Jae-Joon Lee
Cc: matplotlib-devel@lists.sourceforge.net
Subject: Re: [matplotlib-devel] Selecting all the way to the edge of a plot

On 21 March 2010 18:10, Jae-Joon Lee <lee.j.joon@...149...> wrote:

On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aarchiba@...824...> >> wrote:

Often when I want to
zoom in, I want to change only (say) the upper x and y limits.

I pushed a change into the svn that enables this, but in a different way
than you suggested.
The behavior I implemented is similar to the current behavior of the "pan"
mode, i.e., if you hold the "x" key pressed during pan/zoom, only the x-axis
is updated. Same for "y" key.
I hope this is good for your needs also.

Well, it's an interesting feature, but it doesn't address the problem
I'm seeing.

What I'd like to be able to do is, say, to change only the upper x and
y limits, simply click where I want those limits to be and drag right
off the corner of the plot. This actually works, but when I do this
the drag rectangle freezes the moment my pointer leaves the axes, so
that it does not represent the area being zoomed to.

I've attached a screenshot illustrating the bug. Note where the
pointer is and where the "to be zoomed" rectangle is.

I use Linux, with the default backend, whatever that is.

Anne

Regards,
-JJ

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

I guess I misunderstood your original issue.
I think I fixed this in r8210. So please give it a try.

Regards,

-JJ

···

On Sun, Mar 21, 2010 at 6:42 PM, Anne Archibald <aarchiba@...824...> wrote:

On 21 March 2010 18:10, Jae-Joon Lee <lee.j.joon@...149...> wrote:

On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aarchiba@...824...> >> wrote:

Often when I want to
zoom in, I want to change only (say) the upper x and y limits.

I pushed a change into the svn that enables this, but in a different way
than you suggested.
The behavior I implemented is similar to the current behavior of the "pan"
mode, i.e., if you hold the "x" key pressed during pan/zoom, only the x-axis
is updated. Same for "y" key.
I hope this is good for your needs also.

Well, it's an interesting feature, but it doesn't address the problem
I'm seeing.

What I'd like to be able to do is, say, to change only the upper x and
y limits, simply click where I want those limits to be and drag right
off the corner of the plot. This actually works, but when I do this
the drag rectangle freezes the moment my pointer leaves the axes, so
that it does not represent the area being zoomed to.

I've attached a screenshot illustrating the bug. Note where the
pointer is and where the "to be zoomed" rectangle is.

I use Linux, with the default backend, whatever that is.

Anne

Regards,
-JJ

I guess I misunderstood your original issue.
I think I fixed this in r8210. So please give it a try.

Ah, thank you, that does appear to have solved it. (I'll double-check
when I don't have to run it through an ssh tunnel, but the display
looks good.)

Thanks,
Anne

···

On 22 March 2010 12:48, Jae-Joon Lee <lee.j.joon@...149...> wrote:

Regards,

-JJ

On Sun, Mar 21, 2010 at 6:42 PM, Anne Archibald > <aarchiba@...824...> wrote:

On 21 March 2010 18:10, Jae-Joon Lee <lee.j.joon@...149...> wrote:

On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aarchiba@...824...> >>> wrote:

Often when I want to
zoom in, I want to change only (say) the upper x and y limits.

I pushed a change into the svn that enables this, but in a different way
than you suggested.
The behavior I implemented is similar to the current behavior of the "pan"
mode, i.e., if you hold the "x" key pressed during pan/zoom, only the x-axis
is updated. Same for "y" key.
I hope this is good for your needs also.

Well, it's an interesting feature, but it doesn't address the problem
I'm seeing.

What I'd like to be able to do is, say, to change only the upper x and
y limits, simply click where I want those limits to be and drag right
off the corner of the plot. This actually works, but when I do this
the drag rectangle freezes the moment my pointer leaves the axes, so
that it does not represent the area being zoomed to.

I've attached a screenshot illustrating the bug. Note where the
pointer is and where the "to be zoomed" rectangle is.

I use Linux, with the default backend, whatever that is.

Anne

Regards,
-JJ