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
(7) |
2
(3) |
3
(2) |
4
(2) |
5
(2) |
6
(3) |
7
(1) |
8
(9) |
9
(1) |
10
(9) |
11
(2) |
12
|
13
(1) |
14
(11) |
15
(8) |
16
(7) |
17
(10) |
18
(2) |
19
(3) |
20
(9) |
21
(3) |
22
(3) |
23
(1) |
24
(12) |
25
(1) |
26
(3) |
27
(3) |
28
(6) |
29
(1) |
30
(6) |
31
(1) |
|
I'm seeing a memory leak with calls to subplot.clear() and canvas.draw() on MacOS. The same code shows no leakage on unix. Here is a simple script that demonstrates the problem. #!/usr/bin/env python from __future__ import division """Demonstrate a memory leak in matplotlib on MacOS with TkAgg Variants: - Comment out subplot.clear(): this reduces the leak by about 4/5 - Comment out canvas.draw(): this reduces the leak by about 1/5 - Comment out both: there should be essentially no leakage The leak rate seems to be affected by the update rate (larger update interval causes lower leakage), which suggests it's not a simple "x amount of leakage per call". """ import resource import time import Tkinter import matplotlib from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg class MemoryLeaker(Tkinter.Frame): """Demonstrate a memory leak in matplotlib """ def __init__(self, master, updateInterval=0.1, updatesPerReport=25): """Construct a MemoryLeaker Inputs: - master: master widget - updateInterval: interval at which subplot.clear and canvas.draw are called - updatesPerReport: number of updates between memory reports """ Tkinter.Frame.__init__(self, master) self._updateInterval = float(updateInterval) self._updatesPerReport = int(updatesPerReport) self.figure = matplotlib.figure.Figure(figsize=(8, 2), frameon=True) self.canvas = FigureCanvasTkAgg(self.figure, self) self.canvas.get_tk_widget().grid(row=0, column=0, sticky="news") self.subplot = self.figure.add_subplot(1, 1, 1) print "time max RSS leak rate" print "(sec) (kb) (kb/sec)" self._prevTime = time.time() self._prevMem = float("nan") self._reportCount = 0 self.updatePlot() def updatePlot(self): """Update the plot; calls itself at the update interval """ if self._reportCount == 0: self.reportMem() self._reportCount = (self._reportCount + 1) % self._updatesPerReport self.subplot.clear() self.canvas.draw() self.after(int(self._updateInterval * 1000), self.updatePlot) def reportMem(self): currTime = time.time() dTime = currTime - self._prevTime res = resource.getrusage(resource.RUSAGE_SELF) currMem = res.ru_maxrss / 1024 # maximum resident set size utilized (in kb) leakRate = (currMem - self._prevMem) / dTime self._prevTime = currTime self._prevMem = currMem print "%6.1f %6d %6.1f" % (dTime, currMem, leakRate) if __name__ == "__main__": root = Tkinter.Tk() wdg = MemoryLeaker(root, updateInterval=0.1, updatesPerReport=25) wdg.pack(expand=True, fill="both") root.mainloop() P.S. my current setup is: - MacOS 10.9 - python.org python 2.7.8 - matploblib 1.3.1 - a pre-release of Tcl/Tk 8.5.17 but I've seen this on many earlier versions, as well I have not tried it with matplotlib 1.4.1 yet (due to problems packaging that with py2app).
I was able to solve my two problems by doing label="" and numpoints=1. Thank you very much for your help. I found my solution here: http://stackoverflow.com/questions/19385639/duplicate-items-in-legend-in-matplotlib There is also another cleaner solution here: http://stackoverflow.com/questions/13588920/stop-matplotlib-repeating-labels-in-legend import matplotlib matplotlib.use('Agg') from mpl_toolkits.basemap import Basemap import matplotlib.pyplot as plt map = Basemap() map.plot(label="") plt.legend(numpoints=1) On Mon, Oct 20, 2014 at 8:11 AM, Benjamin Root <ben...@ou...> wrote: > Legends entries are blindly constructed. Each plotting call that has a > legend keyword argument will produce a legend entry if you are automatically > building the legend. You can pass a label value of "__nolabel__" to prevent > an entry if you know you are about to do something that would duplicate the > entries. Another approach is to manually collect unique artists and manually > build the legend (I think there is an example of that in the gallary). > > As for configuring the legend, there are a bunch of parameters that can be > set for sizing the font. I think the sizing of the marker is determined by > their size in the plot, though. > > Cheers! > Ben Root > > > On Mon, Oct 20, 2014 at 10:46 AM, Hearne, Mike <mh...@us...> wrote: >> >> For your first question: Use the legend "numpoints" keyword. I think >> if you set it to 1, it should solve that problem. >> >> For your second question, I'm not sure, but I'll bet if you poke >> around in the Legend object returned by the function, you'll find >> something. >> >> On Mon, Oct 20, 2014 at 8:04 AM, Tommy Carstensen >> <tom...@gm...> wrote: >> > How does one avoid duplicate legends? >> > >> > www.tommycarstensen.com/python2_matplotlib_basemap_merc_bluemarble_hresolution.jpg >> > >> > Can I make the legend size smaller than the marker size? >> > >> > >> > ------------------------------------------------------------------------------ >> > Comprehensive Server Monitoring with Site24x7. >> > Monitor 10 servers for 9ドル/Month. >> > Get alerted through email, SMS, voice calls or mobile push >> > notifications. >> > Take corrective actions from your mobile device. >> > http://p.sf.net/sfu/Zoho >> > _______________________________________________ >> > Matplotlib-users mailing list >> > Mat...@li... >> > https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> >> >> ------------------------------------------------------------------------------ >> Comprehensive Server Monitoring with Site24x7. >> Monitor 10 servers for 9ドル/Month. >> Get alerted through email, SMS, voice calls or mobile push notifications. >> Take corrective actions from your mobile device. >> http://p.sf.net/sfu/Zoho >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users > >
I seem to recall that the MaxNLocator and some carefully chosen axes limits suffices for me in the past. On Tue, Oct 21, 2014 at 11:44 AM, Adam Hughes <hug...@gm...> wrote: > I wrote a program that draws grids manually on mpl plots a while back. If > you can't find a solution can you write back here and I'll try to get that > dusted off? > On Oct 21, 2014 2:39 PM, "Benjamin Root" <ben...@ou...> wrote: > >> Well, the first part is easy... it is called twinx(). If you look up axis >> twinning in the documentation, you will find a lot of examples of this. >> >> As for the grids part... that would be tricky. I would first just see if >> matplotlib "just does the right thing". Doubtful, but who knows? Then I >> would likely go the route of lining up the major ticks on both axes so that >> the grid lines for one axes match up with the ticks for the other. >> >> Let us know what you find out. Maybe it might be a useful feature to add >> for twinning. >> >> Cheers! >> Ben Root >> >> >> On Tue, Oct 21, 2014 at 2:29 PM, Neal Becker <ndb...@gm...> wrote: >> >>> I need to overlay 2 different plots. They will share an x-axis, but >>> will have 2 >>> different y axis with 2 different sets of units. I want one y-axis on >>> left and >>> one on right. >>> >>> But to make it harder, I want a grid. That means, there are either 2 >>> different >>> grids, which is ugly, or one plot has to be scaled vertically so that >>> the same y >>> grid can be shared between them. >>> >>> Anyone know how to do this? >>> >>> -- >>> -- Those who don't understand recursion are doomed to repeat it >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Comprehensive Server Monitoring with Site24x7. >>> Monitor 10 servers for 9ドル/Month. >>> Get alerted through email, SMS, voice calls or mobile push notifications. >>> Take corrective actions from your mobile device. >>> http://p.sf.net/sfu/Zoho >>> _______________________________________________ >>> Matplotlib-users mailing list >>> Mat...@li... >>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >>> >> >> >> >> ------------------------------------------------------------------------------ >> Comprehensive Server Monitoring with Site24x7. >> Monitor 10 servers for 9ドル/Month. >> Get alerted through email, SMS, voice calls or mobile push notifications. >> Take corrective actions from your mobile device. >> http://p.sf.net/sfu/Zoho >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> >> > > ------------------------------------------------------------------------------ > Comprehensive Server Monitoring with Site24x7. > Monitor 10 servers for 9ドル/Month. > Get alerted through email, SMS, voice calls or mobile push notifications. > Take corrective actions from your mobile device. > http://p.sf.net/sfu/Zoho > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > >