You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
(12) |
Sep
(12) |
Oct
(56) |
Nov
(65) |
Dec
(37) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(59) |
Feb
(78) |
Mar
(153) |
Apr
(205) |
May
(184) |
Jun
(123) |
Jul
(171) |
Aug
(156) |
Sep
(190) |
Oct
(120) |
Nov
(154) |
Dec
(223) |
2005 |
Jan
(184) |
Feb
(267) |
Mar
(214) |
Apr
(286) |
May
(320) |
Jun
(299) |
Jul
(348) |
Aug
(283) |
Sep
(355) |
Oct
(293) |
Nov
(232) |
Dec
(203) |
2006 |
Jan
(352) |
Feb
(358) |
Mar
(403) |
Apr
(313) |
May
(165) |
Jun
(281) |
Jul
(316) |
Aug
(228) |
Sep
(279) |
Oct
(243) |
Nov
(315) |
Dec
(345) |
2007 |
Jan
(260) |
Feb
(323) |
Mar
(340) |
Apr
(319) |
May
(290) |
Jun
(296) |
Jul
(221) |
Aug
(292) |
Sep
(242) |
Oct
(248) |
Nov
(242) |
Dec
(332) |
2008 |
Jan
(312) |
Feb
(359) |
Mar
(454) |
Apr
(287) |
May
(340) |
Jun
(450) |
Jul
(403) |
Aug
(324) |
Sep
(349) |
Oct
(385) |
Nov
(363) |
Dec
(437) |
2009 |
Jan
(500) |
Feb
(301) |
Mar
(409) |
Apr
(486) |
May
(545) |
Jun
(391) |
Jul
(518) |
Aug
(497) |
Sep
(492) |
Oct
(429) |
Nov
(357) |
Dec
(310) |
2010 |
Jan
(371) |
Feb
(657) |
Mar
(519) |
Apr
(432) |
May
(312) |
Jun
(416) |
Jul
(477) |
Aug
(386) |
Sep
(419) |
Oct
(435) |
Nov
(320) |
Dec
(202) |
2011 |
Jan
(321) |
Feb
(413) |
Mar
(299) |
Apr
(215) |
May
(284) |
Jun
(203) |
Jul
(207) |
Aug
(314) |
Sep
(321) |
Oct
(259) |
Nov
(347) |
Dec
(209) |
2012 |
Jan
(322) |
Feb
(414) |
Mar
(377) |
Apr
(179) |
May
(173) |
Jun
(234) |
Jul
(295) |
Aug
(239) |
Sep
(276) |
Oct
(355) |
Nov
(144) |
Dec
(108) |
2013 |
Jan
(170) |
Feb
(89) |
Mar
(204) |
Apr
(133) |
May
(142) |
Jun
(89) |
Jul
(160) |
Aug
(180) |
Sep
(69) |
Oct
(136) |
Nov
(83) |
Dec
(32) |
2014 |
Jan
(71) |
Feb
(90) |
Mar
(161) |
Apr
(117) |
May
(78) |
Jun
(94) |
Jul
(60) |
Aug
(83) |
Sep
(102) |
Oct
(132) |
Nov
(154) |
Dec
(96) |
2015 |
Jan
(45) |
Feb
(138) |
Mar
(176) |
Apr
(132) |
May
(119) |
Jun
(124) |
Jul
(77) |
Aug
(31) |
Sep
(34) |
Oct
(22) |
Nov
(23) |
Dec
(9) |
2016 |
Jan
(26) |
Feb
(17) |
Mar
(10) |
Apr
(8) |
May
(4) |
Jun
(8) |
Jul
(6) |
Aug
(5) |
Sep
(9) |
Oct
(4) |
Nov
|
Dec
|
2017 |
Jan
(5) |
Feb
(7) |
Mar
(1) |
Apr
(5) |
May
|
Jun
(3) |
Jul
(6) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2025 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
1
(3) |
2
(9) |
3
(4) |
4
(1) |
5
|
6
(5) |
7
(8) |
8
(11) |
9
(15) |
10
(5) |
11
(2) |
12
|
13
(7) |
14
(4) |
15
(13) |
16
(6) |
17
(1) |
18
|
19
(16) |
20
(10) |
21
(13) |
22
(13) |
23
(3) |
24
(1) |
25
(3) |
26
(4) |
27
(1) |
28
(6) |
29
(6) |
30
(1) |
31
|
Hi John, Today i finally got around to trying a suggestion that you made on May 22...on how to put a legend on a Figure (outside of the axis). So i hacked up the example legendDemo.py to experiment with: # Haked up legendDemp.py # Thanks to Charles Twardy for this example from matplotlib.matlab import * a = arange(0,3,.02) b = arange(0,3,.02) c=exp(a) d=c.tolist() d.reverse() d = array(d) ax = subplot(111) lines = plot(a,c,'k--',a,d,'k:',a,c+d,'k') #legend(('Model length', 'Data length', 'Total message length'), 'upper left') fig = gcf() line1 = lines[0] line2 = lines[1] line3 = lines[2] fig.legend((line1, line2, line3), ('Model length', 'Data length', 'Total message length'), 'upper left') ax.set_ylim([-1,20]) ax.grid(0) xlabel('Model complexity --->') ylabel('Message length --->') title('Minimum Message Length') set(gca(), 'yticklabels', []) set(gca(), 'xticklabels', []) savefig('legend_demo_small', dpi=60) savefig('legend_demo_large', dpi=120) show() # End of: Haked up legendDemp.py I then go the following error: clavius:/home/jbenson/python>python legendDemo.py Traceback (most recent call last): File "legendDemo.py", line 22, in ? 'upper left') File "/usr/local/lib/python2.3/site-packages/matplotlib/figure.py", line 179, in legend l = Legend(handles, labels, loc) TypeError: __init__() takes exactly 5 arguments (4 given) clavius:/home/jbenson/python> Should that line 179 in figure.py be: l = Legend(self, handles, labels, loc) # -added ->self<- ? Just for fun, i tried that change and re-ran: clavius:/home/jbenson/python>python legendDemo.py Traceback (most recent call last): File "legendDemo.py", line 22, in ? 'upper left') File "/usr/local/lib/python2.3/site-packages/matplotlib/figure.py", line 179, in legend l = Legend(self, handles, labels, loc) File "/usr/local/lib/python2.3/site-packages/matplotlib/legend.py", line 107, in __init__ self._texts = self._get_texts(labels, textleft, upper) File "/usr/local/lib/python2.3/site-packages/matplotlib/legend.py", line 215, in _get_texts HEIGHT = self._approx_text_height() File "/usr/local/lib/python2.3/site-packages/matplotlib/legend.py", line 126, in _approx_text_height return self.FONTSIZE/72.0*self.figure.dpi.get()/self.parent.bbox.height() AttributeError: 'NoneType' object has no attribute 'dpi' clavius:/home/jbenson/python> ...so those errors look worse. (i'm using matplotlib-0.54.2) Any more hints? Thanks, Jim
newbie question alert. Is there a way to thicken the plotlines on a plot? I'm currently using fmt='k^-' and am trying to make transparencies. I want the plotlines to show up better. Any way to do this? TIA, Danny __________________________________ Do you Yahoo!? Yahoo! Mail - You care about security. So do we. http://promotions.yahoo.com/new_mail
>>>>> "John" == John Hunter <jdh...@ac...> writes: John> Haven't had a chance to test your example yet but hopefully John> I can take a look tomorrow. I haven't done much memory leak John> testing against the _image module yet so this will be a good John> opportunity. I very recently rewrote _image.cpp using cxx. John> I trust you have a fresh CVS checkout? Hi Andrew - found and fixed the memory leak. Can't really call it a leak - more like a "memory gusher". This was in the agg (and image) module "to string" methods. In my tests, the leak went from 600k per frame to approx 600 bytes per frame, which is on par for what I see in other agg memory leak tests. I made a number of comments in your example to point out places where you probably should be using matplotlib a little differently - most of these I flagged with my initials so you can search for them. Modified script is below. After you get the script in the final form you want and purge the comments and memory reporting stuff where appropriate, please add it to CVS. I liked the example so much I made an analogous one dynamic_image_gtk. It's faster than wxagg (13FPS vs 4FPS on my system) which is not surprising since gtkagg has extension code to transfer agg to the GUI canvas, and doesn't flicker. Very nice! I would really like to get that wxagg flicker problem figured out, and the extension code added... Did I hear you volunteering to be the wxagg maintainer :-)? #!/usr/bin/env python """ Copyright (C) 2003-2004 Jeremy O'Donoghue and others License: This work is licensed under the PSF. A copy should be included with this source code, and is also available at http://www.python.org/psf/license.html """ import sys, time, os, gc import matplotlib matplotlib.use('WXAgg') # jdh: you need to control Numeric vs numarray with numerix, otherwise # matplotlib may be using numeric under the hood and while you are # using numarray and this isn't efficient. Also, if you use # numerix=numarray, it is important to compile matplotlib for numarray # by setting NUMERIX = 'numarray' in setup.py before building from matplotlib import rcParams rcParams['numerix'] = 'numarray' # jdh: you can import cm directly, you don't need to go via # matplotlib.matlab import matplotlib.cm as cm from matplotlib.backends.backend_wxagg import Toolbar, FigureCanvasWxAgg # jdh: you don't need a figure manager in the GUI - this class was # designed for the matlab interface from matplotlib.figure import Figure import matplotlib.numerix as numerix from wxPython.wx import * TIMER_ID = wxNewId() # jdh: use this function, or something similar, when reporting a # memory leak def report_memory(i): pid = os.getpid() a2 = os.popen('ps -p %d -o rss,sz' % pid).readlines() print i, ' ', a2[1], return int(a2[1].split()[0]) class PlotFigure(wxFrame): def __init__(self): wxFrame.__init__(self, None, -1, "Test embedded wxFigure") self.fig = Figure((5,4), 75) self.canvas = FigureCanvasWxAgg(self, -1, self.fig) self.toolbar = Toolbar(self.canvas) self.toolbar.Realize() # On Windows, default frame size behaviour is incorrect # you don't need this under Linux tw, th = self.toolbar.GetSizeTuple() fw, fh = self.canvas.GetSizeTuple() self.toolbar.SetSize(wxSize(fw, th)) # Create a figure manager to manage things # Now put all into a sizer sizer = wxBoxSizer(wxVERTICAL) # This way of adding to sizer allows resizing sizer.Add(self.canvas, 1, wxLEFT|wxTOP|wxGROW) # Best to allow the toolbar to resize! sizer.Add(self.toolbar, 0, wxGROW) self.SetSizer(sizer) self.Fit() EVT_TIMER(self, TIMER_ID, self.onTimer) self.cnt = 0 def init_plot_data(self): # jdh you can add a subplot directly from the fig rather than # the fig manager a = self.fig.add_subplot(111) self.x = numerix.arange(120.0)*2*numerix.pi/120.0 self.x.resize((100,120)) self.y = numerix.arange(100.0)*2*numerix.pi/100.0 self.y.resize((120,100)) self.y = numerix.transpose(self.y) z = numerix.sin(self.x) + numerix.cos(self.y) self.im = a.imshow( z, cmap=cm.jet)#, interpolation='nearest') def GetToolBar(self): # You will need to override GetToolBar if you are using an # unmanaged toolbar in your frame return self.toolbar def onTimer(self, evt): self.x += numerix.pi/15 self.y += numerix.pi/20 z = numerix.sin(self.x) + numerix.cos(self.y) self.im.set_array(z) self.canvas.draw() #self.canvas.gui_repaint() # jdh wxagg_draw calls this already val = report_memory(self.cnt) if self.cnt==1: self.start = val # skip cnt=0 self.tstart = time.time() elif self.cnt==50: end = val print 'Average memory consumed per loop: %1.4f\n' % ((end-self.start)/float(self.cnt)) print 'FPS', self.cnt/(time.time() - self.tstart) sys.exit() self.cnt += 1 gc.collect() def onEraseBackground(self, evt): # this is supposed to prevent redraw flicker on some X servers... pass if __name__ == '__main__': app = wxPySimpleApp() frame = PlotFigure() frame.init_plot_data() # Initialise the timer - wxPython requires this to be connected to the # receivicng event handler t = wxTimer(frame, TIMER_ID) t.Start(200) frame.Show() app.MainLoop()