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
(3)
2
(4)
3
(5)
4
(3)
5
6
7
(2)
8
(4)
9
(6)
10
11
(7)
12
(8)
13
(2)
14
(2)
15
(5)
16
(14)
17
(13)
18
(8)
19
20
21
22
(2)
23
(7)
24
(7)
25
(8)
26
(7)
27
(2)
28
(1)
29
30




Showing 5 results of 5

From: Heinrich A. <Hei...@we...> - 2008年09月15日 16:47:15
Attachments: edit.png backend_wx.py
Hello everybody,
after happily using matplotlib for a while and writing a larger application for it with wxPython as the GUI toolkit, I recently tried to add a function to matplotlib itself. It is the possibility to interactively edit a plot, such that attributes of objects in a figure can be changed from the plot itself, in contrast to using a shell such as IPython.
This is of course inspired by Matlab and other tools. There are two ways to do this:
1. Provide graphical picking of objects, and dialogs and/or context menus to change attributes of the selected object(s). Advantages: most intuitive, perhaps also fastest to operate. Disadvantages: picking itself sometimes does not work well, and you can't click on what you don't see or know of.
2. Provide an 'object browser', i.e. a dialog that shows the tree of objects, where the user can select object(s), then inspect all attributes in another part of the dialog, and change them replacing content there. Advantages: delivers insight into the object structure, everything is easily found and selected. Disadvantages: often requires much more clicks, especially for simple changes.
Since the feature was always essential for me in Matlab, I naturally would like to have both solutions available concurrently, but when I tried to implement it, I decided for (2) because I wanted to know more about the object structure at first.
What I have right now is the 'object browser' in the WX backend, but without the actual editing feature, it is only possible to look at the objects and attributes. At this point I saw that I don't know matplotlib well enough to complete the editing myself. I'm overwhelmed by the variety of objects, attributes, methods, and distribution of items over the object tree.
I'm posting this because I would like to
* know if anybody is interested in this feature, too (couldn't find anything through searching the list).
* work together with you to make this something useful.
* get information about an appropriate way to integrate this into matplotlib (where to place the functions, etc.).
* finally see it integrated into a release, if possible.
Attached are a modified backend_wx.py of 0.98.3, and an icon for the toolbar2, to be included into ...\mpl-data\images. With these files, the icon appears on the toolbar2, and when clicked on, a dialog pops up. It shows the object tree on the left hand side, where items can be expanded, collapsed, and selected. For the selected object, the result of str(object.__dict__) is displayed on the right hand side. That's all ... only a start.
What's your opinion?
Regards,
Heinrich Acker
From: Gael V. <gae...@no...> - 2008年09月15日 16:41:40
On Mon, Sep 15, 2008 at 07:38:01PM -0400, Paul Kienzle wrote:
> It does not poll.
> draw_idle() triggers a timer with a 5ms delay. This timer is reset for
> each draw_idle() call. At timeout the timer is restarted if there are more
> events on the wx event queue, otherwise the graph is rendered. This means
> you can do as many draw_idle commands as you want while processing your
> data, but the expensive rendering will only happen once.
OK, very nice. This is indeed a very efficient pattern for dealing with
too agressive refresh. I've seen it used with a lot of success in many
places. Thanks for enlighting me on this. I guess I could (should?) have
looked at the code base.
Gaël
From: Paul K. <pki...@ni...> - 2008年09月15日 16:38:12
On Mon, Sep 15, 2008 at 11:29:15PM +0200, Gael Varoquaux wrote:
> On Mon, Sep 15, 2008 at 04:06:45PM -0400, Paul Kienzle wrote:
> > Hi,
> 
> > I tweaked the wx backend so that the idle delay is 5 ms rather than 50 ms.
> > This allows the idle delay to kick in between mouse move events so
> > the graph will be updated during a drag operation.
> 
> > Users can override the idle delay using:
> 
> > mpl.backends.backend_wx.IDLE_DELAY = n
> 
> I don't know what the context is here, but if I understand it properly,
> to be doing polling on a 5ms timescale is not very nice. This means a
> wake up of the CPU every 5ms for this specific app. If everybody starts
> doing that (I am looking at you, flash) my battery life goes down and my
> laptop starts heating up.
It does not poll.
draw_idle() triggers a timer with a 5ms delay. This timer is reset for
each draw_idle() call. At timeout the timer is restarted if there are more
events on the wx event queue, otherwise the graph is rendered. This means
you can do as many draw_idle commands as you want while processing your
data, but the expensive rendering will only happen once.
Note that the wx.EVT_IDLE event polls about once per second. The 
backend must always bind to wx.EVT_IDLE since mpl_connect doesn't tell
it whether or not it wants to receive the events, so this can't
be avoided.
I'm including a demo program to check the idle event behaviour on
any platform, and the output I get on OS X when starting the
application, waiting a few seconds and moving the mouse. Wx is 
generating more events than I expect. 
Is there any reason to keep idle_event support? It would seems 
more useful to have timer+draw_idle.
 - Paul
-- idle.py --
import time
import pylab
t0 = time.time()
def idle(ev):
 print "idle event at time %.6f seconds"%(time.time()-t0)
def mouse(ev):
 print "motion event at time %.6f seconds"%(time.time()-t0)
pylab.plot([1,2,3])
pylab.gcf().canvas.mpl_connect('idle_event',idle)
pylab.gcf().canvas.mpl_connect('motion_notify_event',mouse)
pylab.show()
-- output --
$ python idle.py
idle event at time 0.564772 seconds
idle event at time 0.565030 seconds
idle event at time 0.565147 seconds
idle event at time 1.565512 seconds
idle event at time 1.565739 seconds
idle event at time 2.566126 seconds
idle event at time 2.566348 seconds
idle event at time 3.566702 seconds
idle event at time 3.566920 seconds
idle event at time 4.567263 seconds
idle event at time 4.567488 seconds
idle event at time 5.567894 seconds
idle event at time 5.568116 seconds
idle event at time 6.568480 seconds
idle event at time 6.568698 seconds
motion event at time 6.945880 seconds
idle event at time 6.946449 seconds
idle event at time 6.946573 seconds
idle event at time 6.946688 seconds
motion event at time 6.963200 seconds
idle event at time 6.963724 seconds
idle event at time 6.963845 seconds
idle event at time 6.963959 seconds
motion event at time 6.978130 seconds
idle event at time 6.978689 seconds
idle event at time 6.978846 seconds
idle event at time 6.978963 seconds
motion event at time 6.996028 seconds
idle event at time 6.996623 seconds
idle event at time 6.996751 seconds
idle event at time 6.996866 seconds
From: Gael V. <gae...@no...> - 2008年09月15日 14:29:27
On Mon, Sep 15, 2008 at 04:06:45PM -0400, Paul Kienzle wrote:
> Hi,
> I tweaked the wx backend so that the idle delay is 5 ms rather than 50 ms.
> This allows the idle delay to kick in between mouse move events so
> the graph will be updated during a drag operation.
> Users can override the idle delay using:
> mpl.backends.backend_wx.IDLE_DELAY = n
I don't know what the context is here, but if I understand it properly,
to be doing polling on a 5ms timescale is not very nice. This means a
wake up of the CPU every 5ms for this specific app. If everybody starts
doing that (I am looking at you, flash) my battery life goes down and my
laptop starts heating up.
Gaël
From: Paul K. <pki...@ni...> - 2008年09月15日 13:06:51
Hi,
I tweaked the wx backend so that the idle delay is 5 ms rather than 50 ms.
This allows the idle delay to kick in between mouse move events so
the graph will be updated during a drag operation.
Users can override the idle delay using:
 mpl.backends.backend_wx.IDLE_DELAY = n
- Paul

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 によって変換されたページ (->オリジナル) /