SourceForge logo
SourceForge logo
Menu

matplotlib-devel — matplotlib developers

You can subscribe to this list here.

2003 Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
(1)
Nov
(33)
Dec
(20)
2004 Jan
(7)
Feb
(44)
Mar
(51)
Apr
(43)
May
(43)
Jun
(36)
Jul
(61)
Aug
(44)
Sep
(25)
Oct
(82)
Nov
(97)
Dec
(47)
2005 Jan
(77)
Feb
(143)
Mar
(42)
Apr
(31)
May
(93)
Jun
(93)
Jul
(35)
Aug
(78)
Sep
(56)
Oct
(44)
Nov
(72)
Dec
(75)
2006 Jan
(116)
Feb
(99)
Mar
(181)
Apr
(171)
May
(112)
Jun
(86)
Jul
(91)
Aug
(111)
Sep
(77)
Oct
(72)
Nov
(57)
Dec
(51)
2007 Jan
(64)
Feb
(116)
Mar
(70)
Apr
(74)
May
(53)
Jun
(40)
Jul
(519)
Aug
(151)
Sep
(132)
Oct
(74)
Nov
(282)
Dec
(190)
2008 Jan
(141)
Feb
(67)
Mar
(69)
Apr
(96)
May
(227)
Jun
(404)
Jul
(399)
Aug
(96)
Sep
(120)
Oct
(205)
Nov
(126)
Dec
(261)
2009 Jan
(136)
Feb
(136)
Mar
(119)
Apr
(124)
May
(155)
Jun
(98)
Jul
(136)
Aug
(292)
Sep
(174)
Oct
(126)
Nov
(126)
Dec
(79)
2010 Jan
(109)
Feb
(83)
Mar
(139)
Apr
(91)
May
(79)
Jun
(164)
Jul
(184)
Aug
(146)
Sep
(163)
Oct
(128)
Nov
(70)
Dec
(73)
2011 Jan
(235)
Feb
(165)
Mar
(147)
Apr
(86)
May
(74)
Jun
(118)
Jul
(65)
Aug
(75)
Sep
(162)
Oct
(94)
Nov
(48)
Dec
(44)
2012 Jan
(49)
Feb
(40)
Mar
(88)
Apr
(35)
May
(52)
Jun
(69)
Jul
(90)
Aug
(123)
Sep
(112)
Oct
(120)
Nov
(105)
Dec
(116)
2013 Jan
(76)
Feb
(26)
Mar
(78)
Apr
(43)
May
(61)
Jun
(53)
Jul
(147)
Aug
(85)
Sep
(83)
Oct
(122)
Nov
(18)
Dec
(27)
2014 Jan
(58)
Feb
(25)
Mar
(49)
Apr
(17)
May
(29)
Jun
(39)
Jul
(53)
Aug
(52)
Sep
(35)
Oct
(47)
Nov
(110)
Dec
(27)
2015 Jan
(50)
Feb
(93)
Mar
(96)
Apr
(30)
May
(55)
Jun
(83)
Jul
(44)
Aug
(8)
Sep
(5)
Oct
Nov
(1)
Dec
(1)
2016 Jan
Feb
Mar
(1)
Apr
May
Jun
(2)
Jul
Aug
(3)
Sep
(1)
Oct
(3)
Nov
Dec
2017 Jan
Feb
(5)
Mar
Apr
May
Jun
Jul
(3)
Aug
Sep
(7)
Oct
Nov
Dec
2018 Jan
Feb
Mar
Apr
May
Jun
Jul
(2)
Aug
Sep
Oct
Nov
Dec
S M T W T F S



1
2
3
(3)
4
(1)
5
6
7
8
9
10
(2)
11
12
13
(1)
14
(2)
15
16
(1)
17
(6)
18
(2)
19
20
21
22
23
(1)
24
25
(7)
26
(4)
27
(2)
28
(5)
29
(3)



Showing 5 results of 5

From: Benjamin R. <ben...@ou...> - 2012年02月28日 19:04:34
On Tue, Feb 28, 2012 at 1:00 PM, Tony Yu <ts...@gm...> wrote:
>
>
> On Tue, Feb 28, 2012 at 11:44 AM, Benjamin Root <ben...@ou...> wrote:
>
>> On Mon, Feb 27, 2012 at 9:45 PM, Tony Yu <ts...@gm...> wrote:
>>
>>>
>>>
>>> On Fri, Feb 17, 2012 at 12:17 PM, Benjamin Root <ben...@ou...> wrote:
>>>
>>>>
>>>>
>>>> On Fri, Feb 17, 2012 at 11:06 AM, Ryan May <rm...@gm...> wrote:
>>>>
>>>>> On Fri, Feb 17, 2012 at 10:14 AM, Benjamin Root <ben...@ou...>
>>>>> wrote:
>>>>> > Hello all,
>>>>> >
>>>>> > I tracked down an annoying problem in one of applications to the
>>>>> Lasso
>>>>> > widget I was using. The widget constructor lets you specify a
>>>>> function to
>>>>> > call when the lasso operation is complete. So, when I create a
>>>>> Lasso, I set
>>>>> > the canvas's widget lock to the new lasso, and the release function
>>>>> will
>>>>> > unlock it when it is done. What would occassionally happen is that
>>>>> the
>>>>> > canvas wouldn't get unlocked and I wouldn't be able to use any other
>>>>> widget
>>>>> > tools.
>>>>> >
>>>>> > It turns out that the release function is not called if the number of
>>>>> > vertices collected is not more than 2. So, accidental clicks that
>>>>> activate
>>>>> > the lasso never get cleaned up. Because of this design, it would be
>>>>> > impossible to guarantee a proper cleanup. One could add another
>>>>> > button_release callback to clean up if the canvas is still locked,
>>>>> but there
>>>>> > is no guarantee that that callback is not called before the lasso's
>>>>> > callback, thereby creating a race condition.
>>>>> >
>>>>> > The only solution I see is to guarantee that the release callback
>>>>> will be
>>>>> > called regardless of the length of the vertices array. Does anybody
>>>>> see a
>>>>> > problem with that?
>>>>>
>>>>> Not having looked at the Lasso code, wouldn't it be possible to use
>>>>> one internal callback for the button_release event, and have this
>>>>> callback call the users' callbacks if points > 2 and always handle the
>>>>> unlocking of the canvas?
>>>>>
>>>>> Ryan
>>>>>
>>>>>
>>>> The problem is that the constructor does not establish the lock. It is
>>>> the user's responsibility to establish a lock and release the locks for
>>>> these widgets. Plus, if the user's callback has cleanup code (such as mine
>>>> did), not guaranteeing that the callback is done can leave behind a mess.
>>>>
>>>> Now, if we were to change the paradigm so that the Widget class
>>>> establishes and releases the lock, and that the user should never handle
>>>> that, then that might be a partial solution, but still leaves unsolved the
>>>> user's cleanup needs.
>>>>
>>>> Ben Root
>>>>
>>>> I just started looking at the Lasso widget for some other changes, and
>>> I agree: the `points > 2` check should be removed.
>>>
>>> As for the design of Lasso, I don't quite understand why it disconnects
>>> the callbacks after a single call. If the onpress event from the lasso
>>> demo<http://matplotlib.sourceforge.net/examples/event_handling/lasso_demo.html>was made a method of Lasso, then you could reuse the Lasso widget instead
>>> of having to create a new one for each selection. Of course, this might
>>> complicate the widget lock used in the demo, but that's true for all other
>>> widgets, right?
>>>
>>> -Tony
>>>
>>>
>> The Lasso disconnects itself after the button_release event because
>> that's what indicates that you are done. The user gets back a single
>> Line2D object that is assumed to represent a single path with no breaks.
>> Reusing the Lasso widget would be a situation that would require a
>> different idiom for user interaction. I wouldn't be against a "MultiLasso"
>> widget that works differently from Lasso, but I really wouldn't want to
>> make changes to existing user widgets. It is iffy enough about whether to
>> remove the point-count-check.
>>
>> Ben Root
>>
>>
> Wouldn't this argument suggest that `RectangleSelector` and `SpanSelector`
> should disconnect as well? I think their functionalities and their
> behaviors are (or should be) pretty similar.
>
Hadn't thought about that, and I don't use them, so I hadn't noticed.
>
> In any case, I agree that changing this behavior of `Lasso` is not
> desirable for compatibility reasons. I'll write up something that looks
> more like `RectangleSelector` and `SpanSelector`. Maybe `LassoSelector`?
>
Actually, I like that idea. It gives a consistent naming scheme.
Ben Root
From: Benjamin R. <ben...@ou...> - 2012年02月28日 17:20:47
On Tue, Feb 28, 2012 at 10:58 AM, John Hunter <jd...@gm...> wrote:
>
>
> On Tue, Feb 28, 2012 at 10:44 AM, Benjamin Root <ben...@ou...> wrote:
>
>>
>> The Lasso disconnects itself after the button_release event because
>> that's what indicates that you are done. The user gets back a single
>> Line2D object that is assumed to represent a single path with no breaks.
>> Reusing the Lasso widget would be a situation that would require a
>> different idiom for user interaction. I wouldn't be against a "MultiLasso"
>> widget that works differently from Lasso, but I really wouldn't want to
>> make changes to existing user widgets. It is iffy enough about whether to
>> remove the point-count-check.
>>
>>
> I added the point count check according to git blame and I don't remember
> why but I agree is doesn't look like it makes sense to me. I think this
> lasso is lightly used based on the volume of questions we get about it.
> One reason it may be lightly used is because it is hard to work with. If
> we can improve it, even changing functionality, I would be in favor. Eg,
> allowing the same Lasso to handle repeated selections makes sense to me.
> If the change looks too onerous, we could call it Lasso2 and deprecate the
> former.
>
I think that logic is slightly faulty. Another reason why we don't get a
lot of questions about it could be because it does (almost) exactly what
users want. Currently, I use the Lasso widget in my track_maker project to
select storm cells in a movie of radar images. Because I have multiple
modes to the program, a persistent Lasso object makes little sense. I also
want the Lasso's line to disappear after I am done selecting it so that I
can put in a polygon patch of my coloring and hatching.
I am skeptical of any redesign of Lasso. I am willing to see what others
have in mind, but I still think that it might better belong in a new class
"MultiLasso". I see no reason to deprecate the current Lasso (only to fix
it).
Cheers!
Ben Root
From: John H. <jd...@gm...> - 2012年02月28日 16:58:53
On Tue, Feb 28, 2012 at 10:44 AM, Benjamin Root <ben...@ou...> wrote:
>
> The Lasso disconnects itself after the button_release event because that's
> what indicates that you are done. The user gets back a single Line2D
> object that is assumed to represent a single path with no breaks. Reusing
> the Lasso widget would be a situation that would require a different idiom
> for user interaction. I wouldn't be against a "MultiLasso" widget that
> works differently from Lasso, but I really wouldn't want to make changes to
> existing user widgets. It is iffy enough about whether to remove the
> point-count-check.
>
>
I added the point count check according to git blame and I don't remember
why but I agree is doesn't look like it makes sense to me. I think this
lasso is lightly used based on the volume of questions we get about it.
 One reason it may be lightly used is because it is hard to work with. If
we can improve it, even changing functionality, I would be in favor. Eg,
allowing the same Lasso to handle repeated selections makes sense to me.
 If the change looks too onerous, we could call it Lasso2 and deprecate the
former.
From: Benjamin R. <ben...@ou...> - 2012年02月28日 16:44:34
On Mon, Feb 27, 2012 at 9:45 PM, Tony Yu <ts...@gm...> wrote:
>
>
> On Fri, Feb 17, 2012 at 12:17 PM, Benjamin Root <ben...@ou...> wrote:
>
>>
>>
>> On Fri, Feb 17, 2012 at 11:06 AM, Ryan May <rm...@gm...> wrote:
>>
>>> On Fri, Feb 17, 2012 at 10:14 AM, Benjamin Root <ben...@ou...> wrote:
>>> > Hello all,
>>> >
>>> > I tracked down an annoying problem in one of applications to the Lasso
>>> > widget I was using. The widget constructor lets you specify a
>>> function to
>>> > call when the lasso operation is complete. So, when I create a Lasso,
>>> I set
>>> > the canvas's widget lock to the new lasso, and the release function
>>> will
>>> > unlock it when it is done. What would occassionally happen is that the
>>> > canvas wouldn't get unlocked and I wouldn't be able to use any other
>>> widget
>>> > tools.
>>> >
>>> > It turns out that the release function is not called if the number of
>>> > vertices collected is not more than 2. So, accidental clicks that
>>> activate
>>> > the lasso never get cleaned up. Because of this design, it would be
>>> > impossible to guarantee a proper cleanup. One could add another
>>> > button_release callback to clean up if the canvas is still locked, but
>>> there
>>> > is no guarantee that that callback is not called before the lasso's
>>> > callback, thereby creating a race condition.
>>> >
>>> > The only solution I see is to guarantee that the release callback will
>>> be
>>> > called regardless of the length of the vertices array. Does anybody
>>> see a
>>> > problem with that?
>>>
>>> Not having looked at the Lasso code, wouldn't it be possible to use
>>> one internal callback for the button_release event, and have this
>>> callback call the users' callbacks if points > 2 and always handle the
>>> unlocking of the canvas?
>>>
>>> Ryan
>>>
>>>
>> The problem is that the constructor does not establish the lock. It is
>> the user's responsibility to establish a lock and release the locks for
>> these widgets. Plus, if the user's callback has cleanup code (such as mine
>> did), not guaranteeing that the callback is done can leave behind a mess.
>>
>> Now, if we were to change the paradigm so that the Widget class
>> establishes and releases the lock, and that the user should never handle
>> that, then that might be a partial solution, but still leaves unsolved the
>> user's cleanup needs.
>>
>> Ben Root
>>
>> I just started looking at the Lasso widget for some other changes, and I
> agree: the `points > 2` check should be removed.
>
> As for the design of Lasso, I don't quite understand why it disconnects
> the callbacks after a single call. If the onpress event from the lasso
> demo<http://matplotlib.sourceforge.net/examples/event_handling/lasso_demo.html>was made a method of Lasso, then you could reuse the Lasso widget instead
> of having to create a new one for each selection. Of course, this might
> complicate the widget lock used in the demo, but that's true for all other
> widgets, right?
>
> -Tony
>
>
The Lasso disconnects itself after the button_release event because that's
what indicates that you are done. The user gets back a single Line2D
object that is assumed to represent a single path with no breaks. Reusing
the Lasso widget would be a situation that would require a different idiom
for user interaction. I wouldn't be against a "MultiLasso" widget that
works differently from Lasso, but I really wouldn't want to make changes to
existing user widgets. It is iffy enough about whether to remove the
point-count-check.
Ben Root
From: Tony Yu <ts...@gm...> - 2012年02月28日 03:45:51
On Fri, Feb 17, 2012 at 12:17 PM, Benjamin Root <ben...@ou...> wrote:
>
>
> On Fri, Feb 17, 2012 at 11:06 AM, Ryan May <rm...@gm...> wrote:
>
>> On Fri, Feb 17, 2012 at 10:14 AM, Benjamin Root <ben...@ou...> wrote:
>> > Hello all,
>> >
>> > I tracked down an annoying problem in one of applications to the Lasso
>> > widget I was using. The widget constructor lets you specify a function
>> to
>> > call when the lasso operation is complete. So, when I create a Lasso,
>> I set
>> > the canvas's widget lock to the new lasso, and the release function will
>> > unlock it when it is done. What would occassionally happen is that the
>> > canvas wouldn't get unlocked and I wouldn't be able to use any other
>> widget
>> > tools.
>> >
>> > It turns out that the release function is not called if the number of
>> > vertices collected is not more than 2. So, accidental clicks that
>> activate
>> > the lasso never get cleaned up. Because of this design, it would be
>> > impossible to guarantee a proper cleanup. One could add another
>> > button_release callback to clean up if the canvas is still locked, but
>> there
>> > is no guarantee that that callback is not called before the lasso's
>> > callback, thereby creating a race condition.
>> >
>> > The only solution I see is to guarantee that the release callback will
>> be
>> > called regardless of the length of the vertices array. Does anybody
>> see a
>> > problem with that?
>>
>> Not having looked at the Lasso code, wouldn't it be possible to use
>> one internal callback for the button_release event, and have this
>> callback call the users' callbacks if points > 2 and always handle the
>> unlocking of the canvas?
>>
>> Ryan
>>
>>
> The problem is that the constructor does not establish the lock. It is
> the user's responsibility to establish a lock and release the locks for
> these widgets. Plus, if the user's callback has cleanup code (such as mine
> did), not guaranteeing that the callback is done can leave behind a mess.
>
> Now, if we were to change the paradigm so that the Widget class
> establishes and releases the lock, and that the user should never handle
> that, then that might be a partial solution, but still leaves unsolved the
> user's cleanup needs.
>
> Ben Root
>
> I just started looking at the Lasso widget for some other changes, and I
agree: the `points > 2` check should be removed.
As for the design of Lasso, I don't quite understand why it disconnects the
callbacks after a single call. If the onpress event from the lasso
demo<http://matplotlib.sourceforge.net/examples/event_handling/lasso_demo.html>was
made a method of Lasso, then you could reuse the Lasso widget instead
of having to create a new one for each selection. Of course, this might
complicate the widget lock used in the demo, but that's true for all other
widgets, right?
-Tony

Showing 5 results of 5

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /