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
On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aar...@ph...>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. Regards, -JJ
On 21 March 2010 18:10, Jae-Joon Lee <lee...@gm...> wrote: > > > On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aar...@ph...> > 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. 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 [aar...@ph...] Sent: Sunday, March 21, 2010 3:42 PM To: Jae-Joon Lee Cc: mat...@li... Subject: Re: [matplotlib-devel] Selecting all the way to the edge of a plot On 21 March 2010 18:10, Jae-Joon Lee <lee...@gm...> wrote: > > > On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aar...@ph...> > 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 >
On 22 March 2010 11:32, Drain, Theodore R (343P) <the...@jp...> 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 [aar...@ph...] > Sent: Sunday, March 21, 2010 3:42 PM > To: Jae-Joon Lee > Cc: mat...@li... > Subject: Re: [matplotlib-devel] Selecting all the way to the edge of a plot > > On 21 March 2010 18:10, Jae-Joon Lee <lee...@gm...> wrote: >> >> >> On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aar...@ph...> >> 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® 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 > Mat...@li... > 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 [per...@gm...] Sent: Monday, March 22, 2010 8:39 AM To: Drain, Theodore R (343P) Cc: mat...@li... Subject: Re: [matplotlib-devel] Selecting all the way to the edge of a plot On 22 March 2010 11:32, Drain, Theodore R (343P) <the...@jp...> 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 [aar...@ph...] > Sent: Sunday, March 21, 2010 3:42 PM > To: Jae-Joon Lee > Cc: mat...@li... > Subject: Re: [matplotlib-devel] Selecting all the way to the edge of a plot > > On 21 March 2010 18:10, Jae-Joon Lee <lee...@gm...> wrote: >> >> >> On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aar...@ph...> >> 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® 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 > Mat...@li... > 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:per...@gm...] Sent: Monday, March 22, 2010 11:39 AM To: Drain, Theodore R (343P) Cc: mat...@li... Subject: Re: [matplotlib-devel] Selecting all the way to the edge of a plot On 22 March 2010 11:32, Drain, Theodore R (343P) <the...@jp...> 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 [aar...@ph...] > Sent: Sunday, March 21, 2010 3:42 PM > To: Jae-Joon Lee > Cc: mat...@li... > Subject: Re: [matplotlib-devel] Selecting all the way to the edge of a plot > > On 21 March 2010 18:10, Jae-Joon Lee <lee...@gm...> wrote: >> >> >> On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aar...@ph...> >> 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® 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 > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-devel > ------------------------------------------------------------------------------ Download Intel® 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 Mat...@li... 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 <aar...@ph...> wrote: > On 21 March 2010 18:10, Jae-Joon Lee <lee...@gm...> wrote: >> >> >> On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aar...@ph...> >> 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 >> >
On 22 March 2010 12:48, Jae-Joon Lee <lee...@gm...> wrote: > 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 > Regards, > > -JJ > > > On Sun, Mar 21, 2010 at 6:42 PM, Anne Archibald > <aar...@ph...> wrote: >> On 21 March 2010 18:10, Jae-Joon Lee <lee...@gm...> wrote: >>> >>> >>> On Sun, Mar 14, 2010 at 3:43 PM, Anne Archibald <aar...@ph...> >>> 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 >>> >> >