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
(14) |
2
(6) |
3
(10) |
4
(3) |
5
(2) |
6
(3) |
7
(21) |
8
|
9
|
10
(4) |
11
(2) |
12
(8) |
13
(17) |
14
(9) |
15
(5) |
16
(3) |
17
|
18
(10) |
19
(11) |
20
(3) |
21
(11) |
22
(1) |
23
|
24
(2) |
25
|
26
(3) |
27
(6) |
28
|
29
|
30
|
|
|
|
|
|
|
From: Thomas C. <tca...@gm...> - 2014-11-13 17:04:35
|
If you want each marker to be a different color you have to use scatter. You can pass scatter a sequence of colors (see http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter) so you don't have to go through making a custom colormap. Tom On Thu Nov 13 2014 at 9:01:42 AM "V. Armando Solé" <so...@es...> wrote: > Hello, > > I am trying to plot a line assigning a user specified color to each > marker. The idea is that if I have n points x, n ppoints y, I was > expecting to be able to provide n markeredgecolors or n markerfacecolors > as a (npoints, 4) array of RGBA values. However that does not seem to be > possible (or I have failed to find it). > > The closest thing to that functionality I have found is based on > creating a colormap with as many entries as points to be plotted: > > http://stackoverflow.com/questions/16834861/create-own- > colormap-using-matplotlib-and-plot-color-scale > > and that only seems to work with scatter plots. > > Any hint about how to generate a Line2D object with a user specified set > of colors (therefore not needing to create and use a colormap)? > > Thanks for your time, > > Armando > > > ------------------------------------------------------------ > ------------------ > 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://pubads.g.doubleclick.net/gampad/clk?id=154624111& > iu=/4140/ostg.clktrk > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
From: Benjamin R. <ben...@ou...> - 2014-11-13 16:23:49
|
Resending to the list, but also with amendments to my previous statement (the new gmail app is really crappy with viewing conversations...) """ Ah, I see I missed that in the original message (I was heading out the door at the time). You say there is a crash. Is there a traceback or segfault? Also, was there a previous installation of matplotlib on the system? If so, which version? """ Amendment: I see the original email noted that ipython would sometimes report errors and sometimes would not. Could you try running those scripts in a regular python environment? I have seen situations where ipython would completely swallow or misreport oddball import issues. My suspicion is that there is a version 1.2 installation of mpl_toolkits that is getting mixed up with the version 1.3 or 1.4 installation of matplotlib. We have seen odd issues like this back when the devs were going back and forth between v1.2 and v1.3 when we change the installation system. Ben Root On Wed, Nov 12, 2014 at 10:23 PM, Benjamin Root <ben...@ou...> wrote: > Ah, I see I missed that in the original message (I was heading out the > door at the time). You say there is a crash. Is there a traceback or > segfault? Also, was there a previous installation of matplotlib on the > system? If so, which version? > > Ben Root > On Nov 12, 2014 8:39 PM, "Geoffrey Mégardon" <geo...@gm...> > wrote: > >> Yes, I may forget to tell, but this code is 100% working, it work on >> other installations I have. So the problem is not in the code. >> >> It is just that on my current laptop, I don't know why, this code, which >> tries to display a 3d plot, leads to a crash. >> Note that 2D plots work fine on their side. >> >> I have an other PC on windows 8.1, and everything work fine on it, I >> installed the same Anaconda 64-bit version. >> >> So it is something to do with my environment, but it is not linked to the >> OS itself, and it is linked with 3D displaying only I would say. >> >> Any idea? :) >> >> >> On 12 November 2014 18:44, Jerzy Karczmarczuk < >> jer...@un...> wrote: >> >>> >>> Le 13/11/2014 00:13, Geoffrey Mégardon a écrit : >>> >>> ... >>> >>>> But to create the 3D axes, to draw in it, and then to show the >>>>> figure, that crashes: >>>>> from mpl_toolkits.mplot3d import axes3d >>>>> import matplotlib >>>>> matplotlib.use("agg") >>>>> import matplotlib.pyplot as plt >>>>> >>>>> fig = plt.figure() >>>>> ax = fig.add_subplot(111, projection='3d') >>>>> X, Y, Z = axes3d.get_test_data(0.05) >>>>> cset = ax.contour(X, Y, Z) >>>>> ax.clabel(cset, fontsize=9, inline=1) >>>>> >>>>> plt.show() >>>>> >>>>> >>>>> Basically on iPython QT console I would get an error like: >>>>> ""Kernel died, restarting"" >>>>> >>>> Perhaps it is your environment, not Matplotlib. >>> A copy-paste of this program run without problems on my system. >>> Anaconda 64 bits, IPython console (within Spyder). >>> But *Windows 7*, not 8. >>> >>> Jerzy Karczmarczuk >>> >>> >>> ------------------------------------------------------------------------------ >>> 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://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk >>> _______________________________________________ >>> Matplotlib-users mailing list >>> Mat...@li... >>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >>> >>> >> >> >> -- >> -- >> MEGARDON Geoffrey >> >> >> ------------------------------------------------------------------------------ >> 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://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> >> |
From: V. A. S. <so...@es...> - 2014-11-13 14:00:45
|
Hello, I am trying to plot a line assigning a user specified color to each marker. The idea is that if I have n points x, n ppoints y, I was expecting to be able to provide n markeredgecolors or n markerfacecolors as a (npoints, 4) array of RGBA values. However that does not seem to be possible (or I have failed to find it). The closest thing to that functionality I have found is based on creating a colormap with as many entries as points to be plotted: http://stackoverflow.com/questions/16834861/create-own-colormap-using-matplotlib-and-plot-color-scale and that only seems to work with scatter plots. Any hint about how to generate a Line2D object with a user specified set of colors (therefore not needing to create and use a colormap)? Thanks for your time, Armando |
From: Sterling S. <sm...@fu...> - 2014-11-13 03:51:01
|
Virgil, Glad to hear you got it to work. You are right that you have to set rcParams before the corresponding element is created (in this case the figure) for the rcParams to affect that creation. -Sterling On Nov 12, 2014, at 4:00PM, Virgil Stokes wrote: > On 12-Nov-14 22:20, Sterling Smith wrote: >> Virgil, >> >> Presumably you set up some callback function that is called when you click on the first figure, and which creates the second figure. Can't you change rcParams['toolbar'] in that callback function? Does it not have any effect? >> >> -Sterling >> >> On Nov 12, 2014, at 12:50PM, Virgil Stokes wrote: >> >>> I would like to be able to control when there is and there is not a navigation toolbar for figures. For example, suppose I have created a figure in which I do not wish to have a toolbar. I have used the following statement for this: >>> >>> mpl.rcParams['toolbar'] = 'None' >>> >>> which works fine. This figure (without a navigation toolbar) contains some points in it that are used to display more figures (each with an image in it). That is, when one of the points is clicked on with a mouse, a new figure is created with a PNG image in it. I wish to have a navigation toolbar in all these figures containing images. >>> >>> How can I place navigation toolbars in these figures with PNG images? >>> ------------------------------------------------------------------------------ >>> 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://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk_______________________________________________ >>> Matplotlib-users mailing list >>> Mat...@li... >>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users > OK Sterling! > I now have it --- I needed to do the following when displaying the figures containing the images: > > mpl.rcParams['toolbar'] = 'toolbar2' # to restore toolbar > f, ax = plt.subplots(figsize=(5,4)) # for images > > It was important to have this order in the statements; i.e., the mpl before the figure was defined. > Thanks for the help |
From: Geoffrey M. <geo...@gm...> - 2014-11-13 01:38:09
|
Yes, I may forget to tell, but this code is 100% working, it work on other installations I have. So the problem is not in the code. It is just that on my current laptop, I don't know why, this code, which tries to display a 3d plot, leads to a crash. Note that 2D plots work fine on their side. I have an other PC on windows 8.1, and everything work fine on it, I installed the same Anaconda 64-bit version. So it is something to do with my environment, but it is not linked to the OS itself, and it is linked with 3D displaying only I would say. Any idea? :) On 12 November 2014 18:44, Jerzy Karczmarczuk <jer...@un... > wrote: > > Le 13/11/2014 00:13, Geoffrey Mégardon a écrit : > > ... > >> But to create the 3D axes, to draw in it, and then to show the >>> figure, that crashes: >>> from mpl_toolkits.mplot3d import axes3d >>> import matplotlib >>> matplotlib.use("agg") >>> import matplotlib.pyplot as plt >>> >>> fig = plt.figure() >>> ax = fig.add_subplot(111, projection='3d') >>> X, Y, Z = axes3d.get_test_data(0.05) >>> cset = ax.contour(X, Y, Z) >>> ax.clabel(cset, fontsize=9, inline=1) >>> >>> plt.show() >>> >>> >>> Basically on iPython QT console I would get an error like: >>> ""Kernel died, restarting"" >>> >> Perhaps it is your environment, not Matplotlib. > A copy-paste of this program run without problems on my system. > Anaconda 64 bits, IPython console (within Spyder). > But *Windows 7*, not 8. > > Jerzy Karczmarczuk > > > ------------------------------------------------------------------------------ > 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://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > -- -- MEGARDON Geoffrey |
From: Virgil S. <vs...@it...> - 2014-11-13 00:21:20
|
On 12-Nov-14 22:20, Sterling Smith wrote: > Virgil, > > Presumably you set up some callback function that is called when you click on the first figure, and which creates the second figure. Can't you change rcParams['toolbar'] in that callback function? Does it not have any effect? > > -Sterling > > On Nov 12, 2014, at 12:50PM, Virgil Stokes wrote: > >> I would like to be able to control when there is and there is not a navigation toolbar for figures. For example, suppose I have created a figure in which I do not wish to have a toolbar. I have used the following statement for this: >> >> mpl.rcParams['toolbar'] = 'None' >> >> which works fine. This figure (without a navigation toolbar) contains some points in it that are used to display more figures (each with an image in it). That is, when one of the points is clicked on with a mouse, a new figure is created with a PNG image in it. I wish to have a navigation toolbar in all these figures containing images. >> >> How can I place navigation toolbars in these figures with PNG images? >> ------------------------------------------------------------------------------ >> 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://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk_______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users OK Sterling! I now have it --- I needed to do the following when displaying the figures containing the images: mpl.rcParams['toolbar'] = 'toolbar2' # to restore toolbar f, ax = plt.subplots(figsize=(5,4)) # for images It was important to have this order in the statements; i.e., the mpl before the figure was defined. Thanks for the help |
From: Jerzy K. <jer...@un...> - 2014-11-12 23:45:01
|
Le 13/11/2014 00:13, Geoffrey Mégardon a écrit : > ... > > But to create the 3D axes, to draw in it, and then to show the > figure, that crashes: > from mpl_toolkits.mplot3d import axes3d > import matplotlib > matplotlib.use("agg") > import matplotlib.pyplot as plt > > fig = plt.figure() > ax = fig.add_subplot(111, projection='3d') > X, Y, Z = axes3d.get_test_data(0.05) > cset = ax.contour(X, Y, Z) > ax.clabel(cset, fontsize=9, inline=1) > > plt.show() > > > Basically on iPython QT console I would get an error like: > ""Kernel died, restarting"" > Perhaps it is your environment, not Matplotlib. A copy-paste of this program run without problems on my system. Anaconda 64 bits, IPython console (within Spyder). But *Windows 7*, not 8. Jerzy Karczmarczuk |
From: Geoffrey M. <geo...@gm...> - 2014-11-12 23:13:43
|
I think you didn't understand my problem. The line matplotlib.use("whateverbackendwhichcanwork") is here just to test different backends, in case the 3d plot works on some backend or not on others. I tried 4 different backends and I can't plot in 3d with any of them (the default backend included). So to remove this line doesn't change anything unfortunately. However, I realise I did a typo in my previous message, the line: import matplotlib.pyplot as pltfig = plt.figure() should be: import matplotlib.pyplot as plt fig = plt.figure() On 12 November 2014 17:34, Benjamin Root <ben...@ou...> wrote: > matplotlib.use("agg") will not allow the figure to show. It means to use > the non-interactive backend that is good only for saving to files. Take > that out and you should be fine. > > Cheers! > Ben Root > > On Wed, Nov 12, 2014 at 5:31 PM, Geoffrey Mégardon < > geo...@gm...> wrote: > >> Hi, >> >> I am using the distribution Anaconda 64-bit. >> >> I never got problems with it. But on that new PC on windows 8.1, I can't >> plot anything in 3D. >> Note that I have an other windows 8.1 installation which works well. >> >> 2D plots work fine. >> >> To create a 3D axe works and then to show the figure works fine: >> from mpl_toolkits.mplot3d import axes3d >> import matplotlib >> matplotlib.use("agg") >> import matplotlib.pyplot as pltfig = plt.figure() >> ax = fig.add_subplot(111, projection='3d') >> plt.show() >> >> But to create the 3D axes, to draw in it, and then to show the figure, >> that crashes: >> from mpl_toolkits.mplot3d import axes3d >> import matplotlib >> matplotlib.use("agg") >> import matplotlib.pyplot as plt >> >> fig = plt.figure() >> ax = fig.add_subplot(111, projection='3d') >> X, Y, Z = axes3d.get_test_data(0.05) >> cset = ax.contour(X, Y, Z) >> ax.clabel(cset, fontsize=9, inline=1) >> >> plt.show() >> >> >> Basically on iPython QT console I would get an error like: >> ""Kernel died, restarting"" >> >> I tried different backend: >> - either they are not installed, >> - or they send the message "Kernel died, restarting" >> - or they send no error but no figure is created. >> >> >> Any idea of what is the problem? >> >> -- >> -- >> MEGARDON Geoffrey >> >> >> ------------------------------------------------------------------------------ >> 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://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> >> > -- -- MEGARDON Geoffrey |
From: Benjamin R. <ben...@ou...> - 2014-11-12 22:34:42
|
matplotlib.use("agg") will not allow the figure to show. It means to use the non-interactive backend that is good only for saving to files. Take that out and you should be fine. Cheers! Ben Root On Wed, Nov 12, 2014 at 5:31 PM, Geoffrey Mégardon < geo...@gm...> wrote: > Hi, > > I am using the distribution Anaconda 64-bit. > > I never got problems with it. But on that new PC on windows 8.1, I can't > plot anything in 3D. > Note that I have an other windows 8.1 installation which works well. > > 2D plots work fine. > > To create a 3D axe works and then to show the figure works fine: > from mpl_toolkits.mplot3d import axes3d > import matplotlib > matplotlib.use("agg") > import matplotlib.pyplot as pltfig = plt.figure() > ax = fig.add_subplot(111, projection='3d') > plt.show() > > But to create the 3D axes, to draw in it, and then to show the figure, > that crashes: > from mpl_toolkits.mplot3d import axes3d > import matplotlib > matplotlib.use("agg") > import matplotlib.pyplot as plt > > fig = plt.figure() > ax = fig.add_subplot(111, projection='3d') > X, Y, Z = axes3d.get_test_data(0.05) > cset = ax.contour(X, Y, Z) > ax.clabel(cset, fontsize=9, inline=1) > > plt.show() > > > Basically on iPython QT console I would get an error like: > ""Kernel died, restarting"" > > I tried different backend: > - either they are not installed, > - or they send the message "Kernel died, restarting" > - or they send no error but no figure is created. > > > Any idea of what is the problem? > > -- > -- > MEGARDON Geoffrey > > > ------------------------------------------------------------------------------ > 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://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > |
From: Geoffrey M. <geo...@gm...> - 2014-11-12 22:31:19
|
Hi, I am using the distribution Anaconda 64-bit. I never got problems with it. But on that new PC on windows 8.1, I can't plot anything in 3D. Note that I have an other windows 8.1 installation which works well. 2D plots work fine. To create a 3D axe works and then to show the figure works fine: from mpl_toolkits.mplot3d import axes3d import matplotlib matplotlib.use("agg") import matplotlib.pyplot as pltfig = plt.figure() ax = fig.add_subplot(111, projection='3d') plt.show() But to create the 3D axes, to draw in it, and then to show the figure, that crashes: from mpl_toolkits.mplot3d import axes3d import matplotlib matplotlib.use("agg") import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111, projection='3d') X, Y, Z = axes3d.get_test_data(0.05) cset = ax.contour(X, Y, Z) ax.clabel(cset, fontsize=9, inline=1) plt.show() Basically on iPython QT console I would get an error like: ""Kernel died, restarting"" I tried different backend: - either they are not installed, - or they send the message "Kernel died, restarting" - or they send no error but no figure is created. Any idea of what is the problem? -- -- MEGARDON Geoffrey |
From: Benjamin R. <ben...@ou...> - 2014-11-12 21:50:42
|
This looks neat. I am sorry you haven't gotten a response back yet from others on the mailing list. What would be really neat is if we could generalize this to not require TeX/PGF (i.e., find a freetype font that does this) and make a matplotlib style file. Cheers! Ben Root On Tue, Nov 11, 2014 at 9:14 PM, Andy Buckley <an...@in...> wrote: > Hmm, no reply again. Are these emails getting through? > > I appreciate this was quite a long and detailed question -- maybe I > should raise these sorts of things on the MPL dev list instead? I'm > happy to contribute on improving the (TeX) font control, if there's > interest, but for now found a workaround using the mathspec package: > > mpl.rcParams["font.serif"] = ["TeX Gyre Pagella"] > mpl.rcParams["pgf.preamble"] = [r"\usepackage{mathspec}", > r"\defaultfontfeatures{Numbers=OldStyle}", > r"\setmathsfont(Digits,Greek){TeX Gyre Pagella}"] > > and variations on that theme. Not wonderfully integrated, and could be > improved, but it does allow the math font (used for tick labels for some > reason) to be specified as completely as the text one. > > Cheers, > Andy > > > On 03/11/14 22:59, Andy Buckley wrote: > > Hi again, > > > > I didn't see any on-list answer, but got an off-list suggestion to use > > an rc parameter to set a LaTeX preamble. I played around a little and > > thought I should report on what I found, especially since it seems that > > there is room for improvement here and I'd be interested to help. > > > > Here are the relevant rc params that I have set: > > > > "font.size" : 17, > > "font.family" : "serif", > > "font.serif" : ["TeX Gyre Pagella"], > > "pgf.rcfonts" : True, > > "pgf.preamble": [r"\usepackage{amsmath,amssymb}", > > r"\usepackage{fontspec}", r"\defaultfontfeatures{Numbers=OldStyle}"], > > > > > > A couple of points to note here: > > > > * I'm using the PGF backend -- this ran a bit faster and produced much > > smaller files than MPL rendering with TeX labels (text.usetex = True). > > Also, I have data files with labels using macros like \text which MPL > > MathText doesn't support, so I need to be able to include amsmath. > > > > * I've had to set TeX Gyre Pagella rather than Palatino, since this SE > > question points out that fontspec's Palatino doesn't support small-caps > > and old-style > > figures: > http://tex.stackexchange.com/questions/2994/fontspec-palatino-with-small-caps-and-old-style-figures > > > > * Although the backend uses fontspec, I have to import it explicitly in > > my preamble, because the MPL import and use of fontspec happens _after_ > > where the pgf.preamble key is inserted. Actually, given that I found > > fontspec doesn't seem to do the right thing for most math fonts, maybe I > > need to ignore the rcfonts setting and do it a bit more manually if I > > want full control -- pity. > > > > > > If I ask this configuration to output a PDF file, though, I don't get > > old-style figures as intended. So I started looking at the generated TeX > > source by outputting as .pgf and wrapping in a little LaTeX file like > this: > > > > \documentclass[12pt,minimal]{standalone} > > \usepackage{pgf} > > \usepackage{amsmath,amssymb} > > > > \usepackage{fontspec} > > \setmainfont[Numbers=OldStyle]{TeX Gyre Pagella} > > > > \begin{document} > > \input{plot.pgf} > > \end{document} > > > > I've attached the result of this with the default MPL .pgf output as > > plot-mpldefault.pdf. A couple of things are notable in that plot: > > > > * Old-style figures are used in the legend (where math mode is not > > used), but the axis tick labels are not. > > > > * The full-size figures on the axes are very thin weight compared to > > the text axis labels -- I knew something had looked a bit wrong in the > > default output! > > > > > > Looking in the .pgf file, the reason is clear. The axis ticks are in > > display math mode, like this: > > > > > > > \pgftext[x=0.987638in,y=1.778400in,right,]{{\rmfamily\fontsize{17.000000}{20.400000}\selectfont > > \(\displaystyle 1.05\)}}% > > ^^^^^^^^^^^^^^^^^^^^^^ > > > > I removed the \(\displaystyle and \) from the file and then recompiled > > with and without the Numbers=OldStyle spec in the wrapper, producing the > > attached plot-textoldstyle.pdf and plot-textlining.pdf figures. In both > > of these the weight of the tick labels is much more balanced with the > > other labels than in the default; the old-style or lining figure style > > is more a matter of personal preference, but I would like to have the > > option. > > > > > > Apologies for the long email! I'd appreciate any feedback. It seems that > > there are a couple of small tweaks which would greatly improve the MPL > > TeX/PGF output, although they probably have side-effects of which I'm > > unaware: > > > > * Don't put tick labels in math mode by default (i.e. unless a special > > ticker is used). In our previous code, which I'm trying to reproduce in > > MPL, even exponent-format tick labels were typeset as "10$^\text{exp}$" > > which automatically gets the font weights and styles correct. Is the > > current \(\displaystyle etc. specified by the default ticker or is it > > specific to the PGF backend? > > > > * I checked a bit, and fontspec seems a bit ropey when it comes to > > changing math fonts to match the text font; I had to > > \usepackage[osf]{mathpazo} before importing fontspec to get a correctly > > weighted math font. mathspec is maybe worth investigation. > > > > > > Thanks in advance, and thanks for tolerating this plot-cosmetics > > obsessiveness ;-) > > > > Andy > > > > > > > > On 27/10/14 14:35, Andy Buckley wrote: > >> Hi, > >> > >> I'm using MPL to implement a new plotter for a project has so far been > >> using a custom-written LaTeX+pstricks script. Despite being slow and a > >> bit hacky, the output is really quite nice and I want to try and emulate > >> it as closely as possible via MPL; for example: > >> > >> > https://users.hepforge.org/~buckley/atlas-py8-shower-e/ATLAS_2012_I1094568/d03-x02-y01.pdf > >> > >> I more or less have this working, but would really like to be able to > >> use the "old-style figures" (OSF) numerals with variable baseline (aka > >> lower-case or text figures cf. > >> http://en.wikipedia.org/wiki/Text_figures), which give those plots > quite > >> a bit of their character. > >> > >> Probably this will anyway be possible only with the TeX or PGF backend > >> to MPL, but what would be the best way to enable OSF figures from MPL? > >> If I correctly understand the backend, the rc params font.family & e.g. > >> font.serif are passed to the LaTeX fontspec package -- and in the > >> fontspec documentation > >> > http://mirror.utexas.edu/ctan/macros/latex/contrib/fontspec/fontspec.pdf > >> it seems that passing the Numbers=(OldStyle) option to the \fontspec > >> command (or as the arg to \addfontfeature) would be the fontspec version > >> of, for example, \usepackage[osf]{mathpazo}. Is there a way to pass > >> options like this to fontspec? In general this would seem a useful thing > >> to be able to do, since fontspec controls far more than OSFs, but I > >> couldn't find a discussion of it in the docs. > >> > >> Hope you can help; thanks! > >> Andy > >> > > > > > > > -- > Dr Andy Buckley, Royal Society University Research Fellow > Particle Physics Expt Group, University of Glasgow / PH Dept, CERN > > > ------------------------------------------------------------------------------ > 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://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
From: Sterling S. <sm...@fu...> - 2014-11-12 21:20:54
|
Virgil, Presumably you set up some callback function that is called when you click on the first figure, and which creates the second figure. Can't you change rcParams['toolbar'] in that callback function? Does it not have any effect? -Sterling On Nov 12, 2014, at 12:50PM, Virgil Stokes wrote: > I would like to be able to control when there is and there is not a navigation toolbar for figures. For example, suppose I have created a figure in which I do not wish to have a toolbar. I have used the following statement for this: > > mpl.rcParams['toolbar'] = 'None' > > which works fine. This figure (without a navigation toolbar) contains some points in it that are used to display more figures (each with an image in it). That is, when one of the points is clicked on with a mouse, a new figure is created with a PNG image in it. I wish to have a navigation toolbar in all these figures containing images. > > How can I place navigation toolbars in these figures with PNG images? > ------------------------------------------------------------------------------ > 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://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk_______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users |
From: Virgil S. <vs...@it...> - 2014-11-12 21:12:55
|
I would like to be able to control when there is and there is not a navigation toolbar for figures. For example, suppose I have created a figure in which I do not wish to have a toolbar. I have used the following statement for this:| mpl.rcParams['toolbar']='None'| which works fine. This figure (without a navigation toolbar) contains some points in it that are used to display more figures (each with an image in it). That is, when one of the points is clicked on with a mouse, a new figure is created with a PNG image in it. I wish to have a navigation toolbar in all these figures containing images. How can I place navigation toolbars in these figures with PNG images? |
From: Andy B. <an...@in...> - 2014-11-12 02:15:10
|
Hmm, no reply again. Are these emails getting through? I appreciate this was quite a long and detailed question -- maybe I should raise these sorts of things on the MPL dev list instead? I'm happy to contribute on improving the (TeX) font control, if there's interest, but for now found a workaround using the mathspec package: mpl.rcParams["font.serif"] = ["TeX Gyre Pagella"] mpl.rcParams["pgf.preamble"] = [r"\usepackage{mathspec}", r"\defaultfontfeatures{Numbers=OldStyle}", r"\setmathsfont(Digits,Greek){TeX Gyre Pagella}"] and variations on that theme. Not wonderfully integrated, and could be improved, but it does allow the math font (used for tick labels for some reason) to be specified as completely as the text one. Cheers, Andy On 03/11/14 22:59, Andy Buckley wrote: > Hi again, > > I didn't see any on-list answer, but got an off-list suggestion to use > an rc parameter to set a LaTeX preamble. I played around a little and > thought I should report on what I found, especially since it seems that > there is room for improvement here and I'd be interested to help. > > Here are the relevant rc params that I have set: > > "font.size" : 17, > "font.family" : "serif", > "font.serif" : ["TeX Gyre Pagella"], > "pgf.rcfonts" : True, > "pgf.preamble": [r"\usepackage{amsmath,amssymb}", > r"\usepackage{fontspec}", r"\defaultfontfeatures{Numbers=OldStyle}"], > > > A couple of points to note here: > > * I'm using the PGF backend -- this ran a bit faster and produced much > smaller files than MPL rendering with TeX labels (text.usetex = True). > Also, I have data files with labels using macros like \text which MPL > MathText doesn't support, so I need to be able to include amsmath. > > * I've had to set TeX Gyre Pagella rather than Palatino, since this SE > question points out that fontspec's Palatino doesn't support small-caps > and old-style > figures:http://tex.stackexchange.com/questions/2994/fontspec-palatino-with-small-caps-and-old-style-figures > > * Although the backend uses fontspec, I have to import it explicitly in > my preamble, because the MPL import and use of fontspec happens _after_ > where the pgf.preamble key is inserted. Actually, given that I found > fontspec doesn't seem to do the right thing for most math fonts, maybe I > need to ignore the rcfonts setting and do it a bit more manually if I > want full control -- pity. > > > If I ask this configuration to output a PDF file, though, I don't get > old-style figures as intended. So I started looking at the generated TeX > source by outputting as .pgf and wrapping in a little LaTeX file like this: > > \documentclass[12pt,minimal]{standalone} > \usepackage{pgf} > \usepackage{amsmath,amssymb} > > \usepackage{fontspec} > \setmainfont[Numbers=OldStyle]{TeX Gyre Pagella} > > \begin{document} > \input{plot.pgf} > \end{document} > > I've attached the result of this with the default MPL .pgf output as > plot-mpldefault.pdf. A couple of things are notable in that plot: > > * Old-style figures are used in the legend (where math mode is not > used), but the axis tick labels are not. > > * The full-size figures on the axes are very thin weight compared to > the text axis labels -- I knew something had looked a bit wrong in the > default output! > > > Looking in the .pgf file, the reason is clear. The axis ticks are in > display math mode, like this: > > > \pgftext[x=0.987638in,y=1.778400in,right,]{{\rmfamily\fontsize{17.000000}{20.400000}\selectfont > \(\displaystyle 1.05\)}}% > ^^^^^^^^^^^^^^^^^^^^^^ > > I removed the \(\displaystyle and \) from the file and then recompiled > with and without the Numbers=OldStyle spec in the wrapper, producing the > attached plot-textoldstyle.pdf and plot-textlining.pdf figures. In both > of these the weight of the tick labels is much more balanced with the > other labels than in the default; the old-style or lining figure style > is more a matter of personal preference, but I would like to have the > option. > > > Apologies for the long email! I'd appreciate any feedback. It seems that > there are a couple of small tweaks which would greatly improve the MPL > TeX/PGF output, although they probably have side-effects of which I'm > unaware: > > * Don't put tick labels in math mode by default (i.e. unless a special > ticker is used). In our previous code, which I'm trying to reproduce in > MPL, even exponent-format tick labels were typeset as "10$^\text{exp}$" > which automatically gets the font weights and styles correct. Is the > current \(\displaystyle etc. specified by the default ticker or is it > specific to the PGF backend? > > * I checked a bit, and fontspec seems a bit ropey when it comes to > changing math fonts to match the text font; I had to > \usepackage[osf]{mathpazo} before importing fontspec to get a correctly > weighted math font. mathspec is maybe worth investigation. > > > Thanks in advance, and thanks for tolerating this plot-cosmetics > obsessiveness ;-) > > Andy > > > > On 27/10/14 14:35, Andy Buckley wrote: >> Hi, >> >> I'm using MPL to implement a new plotter for a project has so far been >> using a custom-written LaTeX+pstricks script. Despite being slow and a >> bit hacky, the output is really quite nice and I want to try and emulate >> it as closely as possible via MPL; for example: >> >> https://users.hepforge.org/~buckley/atlas-py8-shower-e/ATLAS_2012_I1094568/d03-x02-y01.pdf >> >> I more or less have this working, but would really like to be able to >> use the "old-style figures" (OSF) numerals with variable baseline (aka >> lower-case or text figures cf. >> http://en.wikipedia.org/wiki/Text_figures), which give those plots quite >> a bit of their character. >> >> Probably this will anyway be possible only with the TeX or PGF backend >> to MPL, but what would be the best way to enable OSF figures from MPL? >> If I correctly understand the backend, the rc params font.family & e.g. >> font.serif are passed to the LaTeX fontspec package -- and in the >> fontspec documentation >> http://mirror.utexas.edu/ctan/macros/latex/contrib/fontspec/fontspec.pdf >> it seems that passing the Numbers=(OldStyle) option to the \fontspec >> command (or as the arg to \addfontfeature) would be the fontspec version >> of, for example, \usepackage[osf]{mathpazo}. Is there a way to pass >> options like this to fontspec? In general this would seem a useful thing >> to be able to do, since fontspec controls far more than OSFs, but I >> couldn't find a discussion of it in the docs. >> >> Hope you can help; thanks! >> Andy >> > > -- Dr Andy Buckley, Royal Society University Research Fellow Particle Physics Expt Group, University of Glasgow / PH Dept, CERN |
From: Amit S. <ami...@gm...> - 2014-11-11 21:36:42
|
Hi all, Consider the following code: import matplotlib.pyplot as plt fig = plt.figure() ax = fig.gca() circle = plt.Circle((0, 0), radius = 0.5) ax.add_patch(circle) print(plt.axis()) plt.show() The default axis limits are printed as: (0.0, 1.0, 0.0, 1.0) I am not sure why this is the case. So, I would like to learn why? PS: I know I can just do plt.axis('scaled') so that I can see the entire circle. I also asked this on SO, so feel free to answer there as well: http://stackoverflow.com/questions/26824696/matplotlib-axis-default-limits-with-a-circle-patch Thanks, -Amit. -- http://echorand.me |
From: Adam H. <hug...@gm...> - 2014-11-11 06:01:02
|
Thanks! On Nov 7, 2014 3:39 PM, "Thomas Caswell" <tca...@gm...> wrote: > Take a look at matplotlib.cbook.get_sample_data. > > That said, I don't think an _axes_ object should have such a function and > axes3d.get_test_data() should be removed. > > Tom > > On Thu Nov 06 2014 at 11:40:18 AM Adam Hughes <hug...@gm...> > wrote: > >> Hi, >> >> I recently noticed the method: >> >> axes3d.get_test_data() >> >> I was curious if other test/sample data is available somewhere in >> matplotlib, for demo purposes? Or if this is the only sample dataset in >> the library? Not just for 3dplots but for any plot type... Sorry if I'm >> overlooking the obvious... >> ------------------------------------------------------------ >> ------------------ >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> > |
From: Gideon S. <gid...@gm...> - 2014-11-10 17:53:58
|
If I try to format the text using tex in a figure where a colorbar is present, I get the following error: Traceback (most recent call last): File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.py", line 59, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.py", line 1079, in draw func(*args) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.py", line 59, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 2092, in draw a.draw(renderer) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.py", line 59, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axis.py", line 1116, in draw renderer) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axis.py", line 1068, in _get_tick_bboxes extent = tick.label2.get_window_extent(renderer) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/text.py", line 741, in get_window_extent bbox, info, descent = self._get_layout(self._renderer) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/text.py", line 320, in _get_layout ismath=ismath) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py", line 154, in get_text_width_height_descent renderer=self) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/texmanager.py", line 670, in get_text_width_height_descent dvifile = self.make_dvi(tex, fontsize) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/texmanager.py", line 394, in make_dvi texfile = self.make_tex(tex, fontsize) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/texmanager.py", line 309, in make_tex fh.write(s.encode('ascii')) UnicodeEncodeError: 'ascii' codec can't encode character u'\u2212' in position 297: ordinal not in range(128) I am using the MacPorts installation of matplotlib on OS X 10.9. I can generate this error by adding the line: plt.rc('text', usetex=True) to any example code that has a colorbar, (i.e., griddata_demo.py). The consequence of this error is that the figure does not have any text on the colorbar axis. -- gideon |
From: MonicaGM <gci...@gm...> - 2014-11-10 17:12:20
|
Thanks for your answer. I have been struggling with this for many days... Regards, Monica -- View this message in context: http://matplotlib.1069221.n5.nabble.com/double-axis-3D-plot-tp44335p44337.html Sent from the matplotlib - users mailing list archive at Nabble.com. |
From: Benjamin R. <ben...@ou...> - 2014-11-10 16:54:27
|
Unfortunately, no, it isn't possible (at this time). I really should add code that would raise a NotImplementedError when those methods are called. The problem is primarily with how the position of the axis labels are determined while one rotates the 3d plot area. I would need some sort of flag to indicate that an axis is a twinned axis so that the "other" position is used (and fix a whole bunch of other code that makes certain positioning assumptions). Not impossible to implement for the brave-hearted, but it isn't possible to jury-rig or work around right now. Ben Root On Mon, Nov 10, 2014 at 11:42 AM, MonicaGM <gci...@gm...> wrote: > Hi, > > Is it possible to create multiple y,x axis for a 3D plot? > > I tried to create the secondary axes with ax.twinx() but I don't know how > to > get the right orientation. > <http://matplotlib.1069221.n5.nabble.com/file/n44335/3D-axis.png> > > I would appreciate any help > > Regards, > Monica > > > > -- > View this message in context: > http://matplotlib.1069221.n5.nabble.com/double-axis-3D-plot-tp44335.html > Sent from the matplotlib - users mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
From: MonicaGM <gci...@gm...> - 2014-11-10 16:42:27
|
Hi, Is it possible to create multiple y,x axis for a 3D plot? I tried to create the secondary axes with ax.twinx() but I don't know how to get the right orientation. <http://matplotlib.1069221.n5.nabble.com/file/n44335/3D-axis.png> I would appreciate any help Regards, Monica -- View this message in context: http://matplotlib.1069221.n5.nabble.com/double-axis-3D-plot-tp44335.html Sent from the matplotlib - users mailing list archive at Nabble.com. |
From: Thomas C. <tca...@gm...> - 2014-11-07 20:39:11
|
Take a look at matplotlib.cbook.get_sample_data. That said, I don't think an _axes_ object should have such a function and axes3d.get_test_data() should be removed. Tom On Thu Nov 06 2014 at 11:40:18 AM Adam Hughes <hug...@gm...> wrote: > Hi, > > I recently noticed the method: > > axes3d.get_test_data() > > I was curious if other test/sample data is available somewhere in > matplotlib, for demo purposes? Or if this is the only sample dataset in > the library? Not just for 3dplots but for any plot type... Sorry if I'm > overlooking the obvious... > ------------------------------------------------------------ > ------------------ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
From: Štěpán R. <ste...@gm...> - 2014-11-07 20:35:18
|
It works. Thanks a lot for explanation, Ben. Stepan On Fri, Nov 7, 2014 at 6:37 PM, Benjamin Root <ben...@ou...> wrote: > Figured it out! The instance of Test() isn't being retained anywhere, so > when it goes out of scope, the garbage collector eventually gets it. The > fact that it works in py3k is likely a coincidence as the garbage collector > would eventually have cleaned it up at some point. I don't know the > scoping/garbage collection rules for lambdas, so I am guessing that they > persist as they are part of the code as opposed to a de-reference-able (is > that even a word?). Just save the instance of Test as a member variable of > App, and you should be good to go! > > Ben Root > > On Fri, Nov 7, 2014 at 10:05 AM, rouckas <ste...@gm...> wrote: > >> Thanks for the tip. However, subclassing from object didn't help. >> >> >> >> -- >> View this message in context: >> http://matplotlib.1069221.n5.nabble.com/Problem-with-event-handling-in-matplotlib-in-tkinter-tp44302p44315.html >> Sent from the matplotlib - users mailing list archive at Nabble.com. >> >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> > > |
From: Federico A. <ari...@gm...> - 2014-11-07 19:21:43
|
Sorry I'm lost in the discussion. What is the relation between the weak references in callback registry and moving stuff to the figure manager? Federico On 7 Nov 2014 14:13, "Thomas Caswell" <tca...@gm...> wrote: > I am also beginning to like the idea of hanging all of these things off of > FigureManager objects. We have them around, but they are really only used > in pyplot (which is a shame) and seems a natural place to put all of these > aggregation type objects (list of animations, the toolbar stuff, the > navigation stuff, the blit-manager object I want to pull in from > scikit-image, etc). > > @Federico, tell me if I am being dumb about this. > > Tom > > On Fri Nov 07 2014 at 2:05:29 PM Thomas Caswell <tca...@gm...> > wrote: > >> The old-style classes are because mpl pre-dates new-style classes. On >> master all classes now inherit from object (as of about 3 weeks ago >> https://github.com/matplotlib/matplotlib/pull/3662) >> >> >> >> On Fri Nov 07 2014 at 2:02:15 PM Brendan Barnwell <bre...@br...> >> wrote: >> >>> On 2014-11-07 09:37, Benjamin Root wrote: >>> > Figured it out! The instance of Test() isn't being retained anywhere, >>> so >>> > when it goes out of scope, the garbage collector eventually gets it. >>> The >>> > fact that it works in py3k is likely a coincidence as the garbage >>> > collector would eventually have cleaned it up at some point. I don't >>> > know the scoping/garbage collection rules for lambdas, so I am guessing >>> > that they persist as they are part of the code as opposed to a >>> > de-reference-able (is that even a word?). Just save the instance of >>> Test >>> > as a member variable of App, and you should be good to go! >>> >>> This note in cbook.py (which handles the callback registry) >>> explains >>> it. . . sort of: >>> >>> In practice, one should always disconnect all callbacks when they >>> are no longer needed to avoid dangling references (and thus memory >>> leaks). However, real code in matplotlib rarely does so, and due >>> to its design, it is rather difficult to place this kind of code. >>> To get around this, and prevent this class of memory leaks, we >>> instead store weak references to bound methods only, so when the >>> destination object needs to die, the CallbackRegistry won't keep >>> it alive. The Python stdlib weakref module can not create weak >>> references to bound methods directly, so we need to create a proxy >>> object to handle weak references to bound methods (or regular free >>> functions). This technique was shared by Peter Parente on his >>> `"Mindtrove" blog >>> <http://mindtrove.info/articles/python-weak-references/>`_. >>> >>> Definitely a hidden trap! >>> >>> Also, speaking of the dangers of classes not inheriting from >>> object, I >>> noticed that CallbackRegistry in cbook.py is also an old-style class >>> (doesn't inherit from object). I then did a search and found numerous >>> old-style classes throughout MPL. Is there any reason for this? >>> >>> -- >>> Brendan Barnwell >>> "Do not follow where the path may lead. Go, instead, where there is no >>> path, and leave a trail." >>> --author unknown >>> >>> ------------------------------------------------------------ >>> ------------------ >>> _______________________________________________ >>> Matplotlib-users mailing list >>> Mat...@li... >>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >>> >> |
From: Thomas C. <tca...@gm...> - 2014-11-07 19:13:26
|
I am also beginning to like the idea of hanging all of these things off of FigureManager objects. We have them around, but they are really only used in pyplot (which is a shame) and seems a natural place to put all of these aggregation type objects (list of animations, the toolbar stuff, the navigation stuff, the blit-manager object I want to pull in from scikit-image, etc). @Federico, tell me if I am being dumb about this. Tom On Fri Nov 07 2014 at 2:05:29 PM Thomas Caswell <tca...@gm...> wrote: > The old-style classes are because mpl pre-dates new-style classes. On > master all classes now inherit from object (as of about 3 weeks ago > https://github.com/matplotlib/matplotlib/pull/3662) > > > > On Fri Nov 07 2014 at 2:02:15 PM Brendan Barnwell <bre...@br...> > wrote: > >> On 2014-11-07 09:37, Benjamin Root wrote: >> > Figured it out! The instance of Test() isn't being retained anywhere, so >> > when it goes out of scope, the garbage collector eventually gets it. The >> > fact that it works in py3k is likely a coincidence as the garbage >> > collector would eventually have cleaned it up at some point. I don't >> > know the scoping/garbage collection rules for lambdas, so I am guessing >> > that they persist as they are part of the code as opposed to a >> > de-reference-able (is that even a word?). Just save the instance of Test >> > as a member variable of App, and you should be good to go! >> >> This note in cbook.py (which handles the callback registry) >> explains >> it. . . sort of: >> >> In practice, one should always disconnect all callbacks when they >> are no longer needed to avoid dangling references (and thus memory >> leaks). However, real code in matplotlib rarely does so, and due >> to its design, it is rather difficult to place this kind of code. >> To get around this, and prevent this class of memory leaks, we >> instead store weak references to bound methods only, so when the >> destination object needs to die, the CallbackRegistry won't keep >> it alive. The Python stdlib weakref module can not create weak >> references to bound methods directly, so we need to create a proxy >> object to handle weak references to bound methods (or regular free >> functions). This technique was shared by Peter Parente on his >> `"Mindtrove" blog >> <http://mindtrove.info/articles/python-weak-references/>`_. >> >> Definitely a hidden trap! >> >> Also, speaking of the dangers of classes not inheriting from >> object, I >> noticed that CallbackRegistry in cbook.py is also an old-style class >> (doesn't inherit from object). I then did a search and found numerous >> old-style classes throughout MPL. Is there any reason for this? >> >> -- >> Brendan Barnwell >> "Do not follow where the path may lead. Go, instead, where there is no >> path, and leave a trail." >> --author unknown >> >> ------------------------------------------------------------ >> ------------------ >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> > |
From: Thomas C. <tca...@gm...> - 2014-11-07 19:05:37
|
The old-style classes are because mpl pre-dates new-style classes. On master all classes now inherit from object (as of about 3 weeks ago https://github.com/matplotlib/matplotlib/pull/3662) On Fri Nov 07 2014 at 2:02:15 PM Brendan Barnwell <bre...@br...> wrote: > On 2014-11-07 09:37, Benjamin Root wrote: > > Figured it out! The instance of Test() isn't being retained anywhere, so > > when it goes out of scope, the garbage collector eventually gets it. The > > fact that it works in py3k is likely a coincidence as the garbage > > collector would eventually have cleaned it up at some point. I don't > > know the scoping/garbage collection rules for lambdas, so I am guessing > > that they persist as they are part of the code as opposed to a > > de-reference-able (is that even a word?). Just save the instance of Test > > as a member variable of App, and you should be good to go! > > This note in cbook.py (which handles the callback registry) > explains > it. . . sort of: > > In practice, one should always disconnect all callbacks when they > are no longer needed to avoid dangling references (and thus memory > leaks). However, real code in matplotlib rarely does so, and due > to its design, it is rather difficult to place this kind of code. > To get around this, and prevent this class of memory leaks, we > instead store weak references to bound methods only, so when the > destination object needs to die, the CallbackRegistry won't keep > it alive. The Python stdlib weakref module can not create weak > references to bound methods directly, so we need to create a proxy > object to handle weak references to bound methods (or regular free > functions). This technique was shared by Peter Parente on his > `"Mindtrove" blog > <http://mindtrove.info/articles/python-weak-references/>`_. > > Definitely a hidden trap! > > Also, speaking of the dangers of classes not inheriting from > object, I > noticed that CallbackRegistry in cbook.py is also an old-style class > (doesn't inherit from object). I then did a search and found numerous > old-style classes throughout MPL. Is there any reason for this? > > -- > Brendan Barnwell > "Do not follow where the path may lead. Go, instead, where there is no > path, and leave a trail." > --author unknown > > ------------------------------------------------------------ > ------------------ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |