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






Showing 4 results of 4

From: Benjamin R. <ben...@ou...> - 2010年10月16日 17:54:28
On Fri, Oct 15, 2010 at 11:46 PM, Eric Firing <ef...@ha...> wrote:
> On 10/15/2010 04:37 PM, Michiel de Hoon wrote:
> > Hello,
> >
> > Recently I tried to get animations to work for the Mac OS X backend with
> the new timer framework by implementing a TimerMac class that inherits from
> backend_bases.TimerBase. This seems to work fine; the code is uploaded to
> SVN if you'd like to try it.
> >
> > I am not sure what to do about blitting though. I can imagine two uses
> for blitting: Either to make sure that the next figure appears
> instantaneously as a whole after it has been drawn off-screen, or to
> precalculate a background figure that is used repeatedly, and upon which the
> changing parts of the figure are drawn.
> >
> > The latter would make sense for the Mac OS X backend also, but the former
> would not. Effectively, because of double buffering in Quartz all figures
> are automatically blitted already.
> >
> > So my question is: What is the purpose of blitting for animations in
> matplotlib?
>
> As far as I know, it is only the second--speeding up the animation by
> not having to recalculate and redraw so much.
>
> Eric
>
>
Just to add information here. In an animation, you have to draw each
frame. The actual process of displaying that draw (between the graphics
card and the monitor) is very fast, however, the process of calculating the
draw by the graphics card slow (relative to the display part).
So, imagine your mouse cursor moving across your screen, technically that is
an animation of sorts. If everything else on the screen is static, the
graphics card can keep the draw information for the static background in
memory and then only bother to recalculate the draw for the mouse cursor and
put that data into the appropriate place in the data of the static
background.
Note, it is important to use the 'animated=True' kwarg for the collections
and plots that will be non-static in order to take advantage of blitting.
Any plot object that is tagged as animated will have their rendering
deferred until explicitly told to draw.
Note that blitting isn't always a time-saver. If most of your image is
animated and there is very little static background information, the
overhead of blitting will impact your rendering performance. However, for
most purposes of matplotlib, blitting will improve animation performance.
I hope this is informative,
Ben Root
From: Michiel de H. <mjl...@ya...> - 2010年10月16日 16:21:31
OK, thanks. Then it makes sense to implement blitting for the Mac OS X backend as well.
Unfortunately I have hit one snag:
Drawing in Mac OS X / Quartz should be done from inside the event loop. You cannot take a graphics context and just start drawing to it; the graphics context won't be properly initialized.
In lib/matplotlib/animation.py, the actual drawing occurs here:
def _post_draw(self, framedata, blit):
 # After the frame is rendered, this handles the actual flushing of
 # the draw, which can be a direct draw_idle() or make use of the
 # blitting.
 if blit and self._drawn_artists:
 self._blit_draw(self._drawn_artists, self._blit_cache)
 else:
 self._fig.canvas.draw_idle()
Without blitting, this function calls draw_idle on the canvas, which triggers a call to figure.draw(renderer) from inside the event loop, which does the actual drawing, and all is well.
With blitting, it appears that self._blit_draw starts to draw directly to the graphics context; this won't work on Mac OS X.
Can this code be reorganized such that the blitting occurs from inside figure.draw(renderer)? In my opinion, there is no essential difference between blitting and other drawing functions, so to me it would make sense to have blitting and drawing together in figure.draw(renderer).
Best,
--Michiel.
 
From: Eric F. <ef...@ha...> - 2010年10月16日 04:46:58
On 10/15/2010 04:37 PM, Michiel de Hoon wrote:
> Hello,
>
> Recently I tried to get animations to work for the Mac OS X backend with the new timer framework by implementing a TimerMac class that inherits from backend_bases.TimerBase. This seems to work fine; the code is uploaded to SVN if you'd like to try it.
>
> I am not sure what to do about blitting though. I can imagine two uses for blitting: Either to make sure that the next figure appears instantaneously as a whole after it has been drawn off-screen, or to precalculate a background figure that is used repeatedly, and upon which the changing parts of the figure are drawn.
>
> The latter would make sense for the Mac OS X backend also, but the former would not. Effectively, because of double buffering in Quartz all figures are automatically blitted already.
>
> So my question is: What is the purpose of blitting for animations in matplotlib?
As far as I know, it is only the second--speeding up the animation by 
not having to recalculate and redraw so much.
Eric
>
> Best,
> --Michiel.
>
From: Michiel de H. <mjl...@ya...> - 2010年10月16日 02:37:11
Hello,
Recently I tried to get animations to work for the Mac OS X backend with the new timer framework by implementing a TimerMac class that inherits from backend_bases.TimerBase. This seems to work fine; the code is uploaded to SVN if you'd like to try it.
I am not sure what to do about blitting though. I can imagine two uses for blitting: Either to make sure that the next figure appears instantaneously as a whole after it has been drawn off-screen, or to precalculate a background figure that is used repeatedly, and upon which the changing parts of the figure are drawn.
The latter would make sense for the Mac OS X backend also, but the former would not. Effectively, because of double buffering in Quartz all figures are automatically blitted already.
So my question is: What is the purpose of blitting for animations in matplotlib?
Best,
--Michiel.
 

Showing 4 results of 4

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