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
|
3
|
4
|
5
|
6
|
7
|
8
(10) |
9
(7) |
10
(1) |
11
(1) |
12
(2) |
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
(2) |
26
|
27
|
28
|
|
|
From: Michael D. <md...@st...> - 2013-02-25 23:08:37
|
Ugh. It seems I spoke too soon. The illustrious test_bbox_inches_tight test is failing again on master. Mike On 02/25/2013 05:35 PM, Michael Droettboom wrote: > I spent the day getting our test suite into shape again so that it's > passing on Travis. > > Just wanted to let you know, in case, like me, you've seen so many false > positives that you started ignoring Travis. > > Mike > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_feb > _______________________________________________ > Matplotlib-devel mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-devel |
From: Michael D. <md...@st...> - 2013-02-25 22:47:05
|
I spent the day getting our test suite into shape again so that it's passing on Travis. Just wanted to let you know, in case, like me, you've seen so many false positives that you started ignoring Travis. Mike |
From: Roberto C. Jr. <rob...@gm...> - 2013-02-12 16:49:14
|
Em 12-02-2013 13:48, Michael Droettboom escreveu: > Great news! > > I've had a soft spot for Maemo (and it's successors) since I got a > N770 a few years ago. Loved the Debian package manager, gnome-ish > user space, Python bindings for just about everything on the system -- > it was everything a Linux geek would want in a tablet. Yeah, Maemo 5 OS (from 2009) has about 500 Python packages, while MeeGo Harmattan OS (from 2011) has almost 200 Python packages : http://talk.maemo.org/showthread.php?t=80609 > It's a shame that Nokia left and Android is filling in the space. But > perhaps the open source community can carry the torch forward. Nokia ceased to sell Nokia N9 in many countries in 2012, but it is still available in other countries, sometimes at low price. It is estimated that Nokia N9 sold some million units in 2011 and 2012, e.g., in 2011/Q4 it sold more (1.5-2 million units) than Nokia Lumia. So there is a good MeeGo Harmattan community worldwide, and typical real Linux mobile users keep using their devices for some years. So I see MeeGo Harmattan OS on Nokia N9/N950 in its best moment, mature, with many fantastic projects (Inception, Open Mode Kernek, MultiBoot, NITDroid/Android 4.1, Easy Debian, Harmattan SDK on device, etc). And it will be easy to port many softwares to Sailfish OS and Ubuntu Phone OS, due to common Qt/Qt Quick use. |
From: Michael D. <md...@st...> - 2013-02-12 15:53:44
|
Great news! I've had a soft spot for Maemo (and it's successors) since I got a N770 a few years ago. Loved the Debian package manager, gnome-ish user space, Python bindings for just about everything on the system -- it was everything a Linux geek would want in a tablet. It's a shame that Nokia left and Android is filling in the space. But perhaps the open source community can carry the torch forward. Mike On 02/11/2013 05:23 PM, Roberto Colistete Jr. wrote: > Hi, > > Updating the post below, about MatPlotLib on Mobile OS. > > MatPlotLib 1.2.0 was released (in 09/02/2013) for MeeGo Harmattan OS > (for Nokia N9/N950). Including Qt4/PySide backend. See the Talk > Maemo.org topic : > http://talk.maemo.org/showthread.php?p=1128672 > > Also for MeeGo Harmattan OS : > - NumPy 1.7.0 was released today (11/02/2013), just 1 day after the > mainstream release : > http://talk.maemo.org/showthread.php?p=1322503 > - IPython 0.13.1, including Notebook and Qt console interfaces, was > released in 22/01/2013. See the Talk Maemo.org topic : > http://talk.maemo.org/showthread.php?p=1123672 > > See also my blog article comparing scientific Python tools for > computers, tablets and smartphones : > http://translate.google.com/translate?hl=pt-BR&sl=pt&tl=en&u=https%3A%2F%2Ffanyv88.com%3A443%2Fhttp%2Frobertocolistete.wordpress.com%2F2012%2F12%2F26%2Fpython-cientifico-em-computadores-tablets-e-smartphones%2F > > > The conclusion is very simple : real mobile Linux (with glibc, > X11, dependencies, etc) are better for scientific Python. Like Maemo 5 > OS and MeeGo Harmattan OS. And future Sailfish OS and Ubuntu Phone OS > can follow the same path. > > Best regards, > > Roberto Colistete Jr. > > > -------- Mensagem original -------- > Assunto: MatPlotLib for Mobile OS > Data: Fri, 25 Nov 2011 12:33:46 -0200 > De: Roberto Colistete Jr. <rob...@gm...> > Para: mat...@li... > > > > Hi, > > It is my first post to matplotlib-dev. I am a theoretical physicist > interested a lot in Python/IPython/SymPy/NumPy/MatPlotLib/etc. Both for > desktop OS and mobile OS. > > About mobile OS (for smartphones/tablets), MatPlotLib is packaged > and works well in : > > - MeeGo 1.2 Harmattan OS on Nokia N9/N950, released in 2011, with Nokia > N9 selling since September/October. MatPlotLib 1.0.0 was released > yesterday by me (as a maintainer) : > http://forum.meego.com/showthread.php?t=5231 > http://talk.maemo.org/showthread.php?p=1128672 > > - Maemo 5 (Fremantle) OS on Nokia N900, released in 11/2009 and > currently difficult to buy brand new. Install using "# apt-get install > python-matplotlib" : > http://maemo.org/packages/view/python-matplotlib/ > > NumPy, SymPy and IPython are also available for both OS. I have searched > and found that there is no MatPlotLib for Android OS, iOS and Symbian. > > So it seems that the only smartphone selling today with MatPlotLib > support is Nokia N9 (MeeGo 1.2 Harmattan OS). The repositories for Nokia > N9 : > http://harmattan-dev.nokia.com/unstable/beta3/Fremantle_Update7_vs_Harmattan_Beta3_content_comparison.html > > show about 170 Python packages. > MeeGo Harmattan is also a developer's paradise, with more than 10 > programming languages available now (via "apt-get install" or already > installed) : gcc/g++ (3.4, 4.2, 4.4), gfortran 4.4, gpc (GNU Pascal > 2.2), Lua 5.1, Perl 5.8, Prolog, Python 2.5/2.6/3.1, Ruby 1.8, TCL > 8.4/8.5, Vala 0.12, etc. Also Qt/C++, Qt/Qt Quick, Qt/Python (PySide). > > Best regards from Brazil, > > Roberto > > > > > > ------------------------------------------------------------------------------ > Free Next-Gen Firewall Hardware Offer > Buy your Sophos next-gen firewall before the end March 2013 > and get the hardware for free! Learn more. > http://p.sf.net/sfu/sophos-d2d-feb > > > _______________________________________________ > Matplotlib-devel mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-devel |
From: Roberto C. Jr. <rob...@gm...> - 2013-02-11 22:23:52
|
Hi, Updating the post below, about MatPlotLib on Mobile OS. MatPlotLib 1.2.0 was released (in 09/02/2013) for MeeGo Harmattan OS (for Nokia N9/N950). Including Qt4/PySide backend. See the Talk Maemo.org topic : http://talk.maemo.org/showthread.php?p=1128672 Also for MeeGo Harmattan OS : - NumPy 1.7.0 was released today (11/02/2013), just 1 day after the mainstream release : http://talk.maemo.org/showthread.php?p=1322503 - IPython 0.13.1, including Notebook and Qt console interfaces, was released in 22/01/2013. See the Talk Maemo.org topic : http://talk.maemo.org/showthread.php?p=1123672 See also my blog article comparing scientific Python tools for computers, tablets and smartphones : http://translate.google.com/translate?hl=pt-BR&sl=pt&tl=en&u=https%3A%2F%2Ffanyv88.com%3A443%2Fhttp%2Frobertocolistete.wordpress.com%2F2012%2F12%2F26%2Fpython-cientifico-em-computadores-tablets-e-smartphones%2F The conclusion is very simple : real mobile Linux (with glibc, X11, dependencies, etc) are better for scientific Python. Like Maemo 5 OS and MeeGo Harmattan OS. And future Sailfish OS and Ubuntu Phone OS can follow the same path. Best regards, Roberto Colistete Jr. -------- Mensagem original -------- Assunto: MatPlotLib for Mobile OS Data: Fri, 25 Nov 2011 12:33:46 -0200 De: Roberto Colistete Jr. <rob...@gm...> Para: mat...@li... Hi, It is my first post to matplotlib-dev. I am a theoretical physicist interested a lot in Python/IPython/SymPy/NumPy/MatPlotLib/etc. Both for desktop OS and mobile OS. About mobile OS (for smartphones/tablets), MatPlotLib is packaged and works well in : - MeeGo 1.2 Harmattan OS on Nokia N9/N950, released in 2011, with Nokia N9 selling since September/October. MatPlotLib 1.0.0 was released yesterday by me (as a maintainer) : http://forum.meego.com/showthread.php?t=5231 http://talk.maemo.org/showthread.php?p=1128672 - Maemo 5 (Fremantle) OS on Nokia N900, released in 11/2009 and currently difficult to buy brand new. Install using "# apt-get install python-matplotlib" : http://maemo.org/packages/view/python-matplotlib/ NumPy, SymPy and IPython are also available for both OS. I have searched and found that there is no MatPlotLib for Android OS, iOS and Symbian. So it seems that the only smartphone selling today with MatPlotLib support is Nokia N9 (MeeGo 1.2 Harmattan OS). The repositories for Nokia N9 : http://harmattan-dev.nokia.com/unstable/beta3/Fremantle_Update7_vs_Harmattan_Beta3_content_comparison.html show about 170 Python packages. MeeGo Harmattan is also a developer's paradise, with more than 10 programming languages available now (via "apt-get install" or already installed) : gcc/g++ (3.4, 4.2, 4.4), gfortran 4.4, gpc (GNU Pascal 2.2), Lua 5.1, Perl 5.8, Prolog, Python 2.5/2.6/3.1, Ruby 1.8, TCL 8.4/8.5, Vala 0.12, etc. Also Qt/C++, Qt/Qt Quick, Qt/Python (PySide). Best regards from Brazil, Roberto |
From: Markus H. <mar...@ui...> - 2013-02-10 17:42:08
|
Hi Tom, Yes, I would find the version you suggested clearer. I mean now that I know how to read it the old version seems quite logical, but if it would have been written the way you suggested I would not have made my misinterpretation. Thank you for your help, Cheers, Markus Am 2013-02-09 14:04, schrieb Thomas Caswell: > My default interpretation of errors is always relative to the value > because that is how they are reported (100+10-20 not 100+110-80). > > (got your 2nd email while writing this) > > Would you find this clearer? Maybe xerr and yerr should be split up > > xerr/yerr: [ scalar | N, Nx1, or 2xN array-like ] > If a scalar number, len(N) array-like object, or an Nx1 array-like > object, errorbars are drawn x/y +/- value. > If a sequence of shape 2xN, errorbars are drawn at x/y - row1 and x/y + row2 > > Tom > > On Sat, Feb 9, 2013 at 12:49 PM, Markus Haider <mar...@ui...> wrote: >> Hi Tom, >> >> Thank you very much for your answer. Indeed this solves my problem. However, >> I was wondering if the documentation on this is correct. >> At >> http://matplotlib.org/api/axes_api.html?highlight=errorbar#matplotlib.axes.Axes.errorbar >> it says: >> >> xerr/yerr: [ scalar | N, Nx1, or 2xN array-like ] >> If a scalar number, len(N) array-like object, or an Nx1 array-like object, >> errorbars are drawn +/- value. >> If a sequence of shape 2xN, errorbars are drawn at -row1 and +row2 >> >> This sounds to me that for a 2xN argument it should be drawn from the actual >> supplied value, or would you interpret this differently? >> >> Thanks, >> Markus >> >> Am 2013-02-08 22:02, schrieb Thomas Caswell: >> >>> The bar is drawn from `y - yerr_low` to `y + yerr_upp` >>> >>> ax.errorbar(x + .5,y,yerr=[[y - yerr_low],[yerr_upp - >>> y]],fmt='s',markersize=4) >>> >>> will get you what you want. >>> >>> Tom >>> >>> On Fri, Feb 8, 2013 at 8:41 PM, Markus Haider <mar...@ui...> >>> wrote: >>>> Hi, >>>> >>>> I think I have a problem with errorbars in a log plot. The problem is >>>> reproducible through the enclosed errorbar_log.py file. As you can see I >>>> plot a point with y = 10**(-5) and I want the errorbars drawn from >>>> 10**(-5.5) to 10**(-4.5) which should be symmetric in this plot but >>>> isn't. >>>> >>>> Here is the content of my errorbar_log.py file: >>>> >>>> #!/usr/bin/python >>>> import numpy as np >>>> import matplotlib.pyplot as plt >>>> >>>> fig = plt.figure() >>>> ax = fig.add_subplot(111) >>>> x = 0.0 >>>> y = 10**(-5.0) >>>> yerr_low = 10**(-5.5) >>>> yerr_upp = 10**(-4.5) >>>> ax.errorbar(x,y,yerr=[[yerr_low],[yerr_upp]],fmt='o',markersize=4) >>>> ax.set_xlim(-1.0,1.0) >>>> ax.set_ylim(1E-6,1E-3) >>>> ax.set_yscale('log') >>>> plt.savefig('errorbar.png') >>>> >>>> --------------------------------------------- >>>> >>>> 10**(-5.5) = 3.162277660168379e-06 >>>> and 10**(-4.5) = 3.1622776601683795e-05 >>>> >>>> but you can see that the lower boundary is not at the calculated value. >>>> <http://matplotlib.1069221.n5.nabble.com/file/n40412/errorbar.png> >>>> >>>> >>>> Do I misunderstand the behaviour of the errorbar function or is this a >>>> bug? >>>> >>>> Cheers, >>>> Markus >>>> >>>> >>>> >>>> -- >>>> View this message in context: >>>> http://matplotlib.1069221.n5.nabble.com/Errorbar-problem-tp40412.html >>>> Sent from the matplotlib - devel mailing list archive at Nabble.com. >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Free Next-Gen Firewall Hardware Offer >>>> Buy your Sophos next-gen firewall before the end March 2013 >>>> and get the hardware for free! Learn more. >>>> http://p.sf.net/sfu/sophos-d2d-feb >>>> _______________________________________________ >>>> Matplotlib-devel mailing list >>>> Mat...@li... >>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel >>> >>> >>> -- >>> Thomas Caswell >>> tca...@gm... >>> > > > -- > Thomas Caswell > tca...@gm... > |
From: Patrick M. <pat...@gm...> - 2013-02-09 21:16:26
|
Greetings, I came across what I would consider an interesting text bug when using AnchoredText. In summary, when trying to pass a horizontal alignment to the text, anything but 'left' doesn't work. The text gets positioned around the left-edge of the text space (left spine of text box + padding). This occurs both with the "normal" plotting and the ImageGrid. I went ahead and filed an issue, but didn't know if someone who doesn't' check the issues list might have a work around. The git issue has a sample script and image to illustrate the issue. https://github.com/matplotlib/matplotlib/issues/1742 I'm not sure if this is a continuation of the issues reported in Issue #1571 <https://github.com/matplotlib/matplotlib/issues/1571> Pull Request #1081 <https://github.com/matplotlib/matplotlib/issues/1081> Pull Request #1589 <https://github.com/matplotlib/matplotlib/issues/1589> I'm in the midst of my dissertation, so I don't have the time right now to dig into this. If no one else can, I'll take a crack at it in a couple months when I'm done. Cheers, Patrick --- Patrick Marsh Ph.D. Candidate / Liaison to the HWT School of Meteorology / University of Oklahoma Cooperative Institute for Mesoscale Meteorological Studies National Severe Storms Laboratory http://www.patricktmarsh.com |
From: Thomas C. <tca...@gm...> - 2013-02-09 19:04:46
|
My default interpretation of errors is always relative to the value because that is how they are reported (100+10-20 not 100+110-80). (got your 2nd email while writing this) Would you find this clearer? Maybe xerr and yerr should be split up xerr/yerr: [ scalar | N, Nx1, or 2xN array-like ] If a scalar number, len(N) array-like object, or an Nx1 array-like object, errorbars are drawn x/y +/- value. If a sequence of shape 2xN, errorbars are drawn at x/y - row1 and x/y + row2 Tom On Sat, Feb 9, 2013 at 12:49 PM, Markus Haider <mar...@ui...> wrote: > Hi Tom, > > Thank you very much for your answer. Indeed this solves my problem. However, > I was wondering if the documentation on this is correct. > At > http://matplotlib.org/api/axes_api.html?highlight=errorbar#matplotlib.axes.Axes.errorbar > it says: > > xerr/yerr: [ scalar | N, Nx1, or 2xN array-like ] > If a scalar number, len(N) array-like object, or an Nx1 array-like object, > errorbars are drawn +/- value. > If a sequence of shape 2xN, errorbars are drawn at -row1 and +row2 > > This sounds to me that for a 2xN argument it should be drawn from the actual > supplied value, or would you interpret this differently? > > Thanks, > Markus > > Am 2013-02-08 22:02, schrieb Thomas Caswell: > >> The bar is drawn from `y - yerr_low` to `y + yerr_upp` >> >> ax.errorbar(x + .5,y,yerr=[[y - yerr_low],[yerr_upp - >> y]],fmt='s',markersize=4) >> >> will get you what you want. >> >> Tom >> >> On Fri, Feb 8, 2013 at 8:41 PM, Markus Haider <mar...@ui...> >> wrote: >>> >>> Hi, >>> >>> I think I have a problem with errorbars in a log plot. The problem is >>> reproducible through the enclosed errorbar_log.py file. As you can see I >>> plot a point with y = 10**(-5) and I want the errorbars drawn from >>> 10**(-5.5) to 10**(-4.5) which should be symmetric in this plot but >>> isn't. >>> >>> Here is the content of my errorbar_log.py file: >>> >>> #!/usr/bin/python >>> import numpy as np >>> import matplotlib.pyplot as plt >>> >>> fig = plt.figure() >>> ax = fig.add_subplot(111) >>> x = 0.0 >>> y = 10**(-5.0) >>> yerr_low = 10**(-5.5) >>> yerr_upp = 10**(-4.5) >>> ax.errorbar(x,y,yerr=[[yerr_low],[yerr_upp]],fmt='o',markersize=4) >>> ax.set_xlim(-1.0,1.0) >>> ax.set_ylim(1E-6,1E-3) >>> ax.set_yscale('log') >>> plt.savefig('errorbar.png') >>> >>> --------------------------------------------- >>> >>> 10**(-5.5) = 3.162277660168379e-06 >>> and 10**(-4.5) = 3.1622776601683795e-05 >>> >>> but you can see that the lower boundary is not at the calculated value. >>> <http://matplotlib.1069221.n5.nabble.com/file/n40412/errorbar.png> >>> >>> >>> Do I misunderstand the behaviour of the errorbar function or is this a >>> bug? >>> >>> Cheers, >>> Markus >>> >>> >>> >>> -- >>> View this message in context: >>> http://matplotlib.1069221.n5.nabble.com/Errorbar-problem-tp40412.html >>> Sent from the matplotlib - devel mailing list archive at Nabble.com. >>> >>> >>> ------------------------------------------------------------------------------ >>> Free Next-Gen Firewall Hardware Offer >>> Buy your Sophos next-gen firewall before the end March 2013 >>> and get the hardware for free! Learn more. >>> http://p.sf.net/sfu/sophos-d2d-feb >>> _______________________________________________ >>> Matplotlib-devel mailing list >>> Mat...@li... >>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel >> >> >> >> -- >> Thomas Caswell >> tca...@gm... >> > -- Thomas Caswell tca...@gm... |
From: Markus H. <mar...@ui...> - 2013-02-09 18:58:02
|
Actually never mind, I think I just interpreted it wrong. However it could perhaps be more clear if it would say something like If a sequence of shape 2xN, errorbars are drawn at y +/- row1/row2 Thanks, Markus Am 2013-02-09 13:49, schrieb Markus Haider: > Hi Tom, > > Thank you very much for your answer. Indeed this solves my problem. > However, I was wondering if the documentation on this is correct. > At > http://matplotlib.org/api/axes_api.html?highlight=errorbar#matplotlib.axes.Axes.errorbar > it says: > > xerr/yerr: [ scalar | N, Nx1, or 2xN array-like ] > If a scalar number, len(N) array-like object, or an Nx1 array-like > object, errorbars are drawn +/- value. > If a sequence of shape 2xN, errorbars are drawn at -row1 and +row2 > > This sounds to me that for a 2xN argument it should be drawn from the > actual supplied value, or would you interpret this differently? > > Thanks, > Markus > > Am 2013-02-08 22:02, schrieb Thomas Caswell: >> The bar is drawn from `y - yerr_low` to `y + yerr_upp` >> >> ax.errorbar(x + .5,y,yerr=[[y - yerr_low],[yerr_upp - >> y]],fmt='s',markersize=4) >> >> will get you what you want. >> >> Tom >> >> On Fri, Feb 8, 2013 at 8:41 PM, Markus Haider <mar...@ui...> wrote: >>> Hi, >>> >>> I think I have a problem with errorbars in a log plot. The problem is >>> reproducible through the enclosed errorbar_log.py file. As you can see I >>> plot a point with y = 10**(-5) and I want the errorbars drawn from >>> 10**(-5.5) to 10**(-4.5) which should be symmetric in this plot but isn't. >>> >>> Here is the content of my errorbar_log.py file: >>> >>> #!/usr/bin/python >>> import numpy as np >>> import matplotlib.pyplot as plt >>> >>> fig = plt.figure() >>> ax = fig.add_subplot(111) >>> x = 0.0 >>> y = 10**(-5.0) >>> yerr_low = 10**(-5.5) >>> yerr_upp = 10**(-4.5) >>> ax.errorbar(x,y,yerr=[[yerr_low],[yerr_upp]],fmt='o',markersize=4) >>> ax.set_xlim(-1.0,1.0) >>> ax.set_ylim(1E-6,1E-3) >>> ax.set_yscale('log') >>> plt.savefig('errorbar.png') >>> >>> --------------------------------------------- >>> >>> 10**(-5.5) = 3.162277660168379e-06 >>> and 10**(-4.5) = 3.1622776601683795e-05 >>> >>> but you can see that the lower boundary is not at the calculated value. >>> <http://matplotlib.1069221.n5.nabble.com/file/n40412/errorbar.png> >>> >>> >>> Do I misunderstand the behaviour of the errorbar function or is this a bug? >>> >>> Cheers, >>> Markus >>> >>> >>> >>> -- >>> View this message in context: http://matplotlib.1069221.n5.nabble.com/Errorbar-problem-tp40412.html >>> Sent from the matplotlib - devel mailing list archive at Nabble.com. >>> >>> ------------------------------------------------------------------------------ >>> Free Next-Gen Firewall Hardware Offer >>> Buy your Sophos next-gen firewall before the end March 2013 >>> and get the hardware for free! Learn more. >>> http://p.sf.net/sfu/sophos-d2d-feb >>> _______________________________________________ >>> Matplotlib-devel mailing list >>> Mat...@li... >>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel >> >> -- >> Thomas Caswell >> tca...@gm... >> > > ------------------------------------------------------------------------------ > Free Next-Gen Firewall Hardware Offer > Buy your Sophos next-gen firewall before the end March 2013 > and get the hardware for free! Learn more. > http://p.sf.net/sfu/sophos-d2d-feb > _______________________________________________ > Matplotlib-devel mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-devel > |
From: Markus H. <mar...@ui...> - 2013-02-09 18:49:28
|
Hi Tom, Thank you very much for your answer. Indeed this solves my problem. However, I was wondering if the documentation on this is correct. At http://matplotlib.org/api/axes_api.html?highlight=errorbar#matplotlib.axes.Axes.errorbar it says: xerr/yerr: [ scalar | N, Nx1, or 2xN array-like ] If a scalar number, len(N) array-like object, or an Nx1 array-like object, errorbars are drawn +/- value. If a sequence of shape 2xN, errorbars are drawn at -row1 and +row2 This sounds to me that for a 2xN argument it should be drawn from the actual supplied value, or would you interpret this differently? Thanks, Markus Am 2013-02-08 22:02, schrieb Thomas Caswell: > The bar is drawn from `y - yerr_low` to `y + yerr_upp` > > ax.errorbar(x + .5,y,yerr=[[y - yerr_low],[yerr_upp - > y]],fmt='s',markersize=4) > > will get you what you want. > > Tom > > On Fri, Feb 8, 2013 at 8:41 PM, Markus Haider <mar...@ui...> wrote: >> Hi, >> >> I think I have a problem with errorbars in a log plot. The problem is >> reproducible through the enclosed errorbar_log.py file. As you can see I >> plot a point with y = 10**(-5) and I want the errorbars drawn from >> 10**(-5.5) to 10**(-4.5) which should be symmetric in this plot but isn't. >> >> Here is the content of my errorbar_log.py file: >> >> #!/usr/bin/python >> import numpy as np >> import matplotlib.pyplot as plt >> >> fig = plt.figure() >> ax = fig.add_subplot(111) >> x = 0.0 >> y = 10**(-5.0) >> yerr_low = 10**(-5.5) >> yerr_upp = 10**(-4.5) >> ax.errorbar(x,y,yerr=[[yerr_low],[yerr_upp]],fmt='o',markersize=4) >> ax.set_xlim(-1.0,1.0) >> ax.set_ylim(1E-6,1E-3) >> ax.set_yscale('log') >> plt.savefig('errorbar.png') >> >> --------------------------------------------- >> >> 10**(-5.5) = 3.162277660168379e-06 >> and 10**(-4.5) = 3.1622776601683795e-05 >> >> but you can see that the lower boundary is not at the calculated value. >> <http://matplotlib.1069221.n5.nabble.com/file/n40412/errorbar.png> >> >> >> Do I misunderstand the behaviour of the errorbar function or is this a bug? >> >> Cheers, >> Markus >> >> >> >> -- >> View this message in context: http://matplotlib.1069221.n5.nabble.com/Errorbar-problem-tp40412.html >> Sent from the matplotlib - devel mailing list archive at Nabble.com. >> >> ------------------------------------------------------------------------------ >> Free Next-Gen Firewall Hardware Offer >> Buy your Sophos next-gen firewall before the end March 2013 >> and get the hardware for free! Learn more. >> http://p.sf.net/sfu/sophos-d2d-feb >> _______________________________________________ >> Matplotlib-devel mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel > > > -- > Thomas Caswell > tca...@gm... > |
From: Todd <tod...@gm...> - 2013-02-09 15:32:18
|
On Feb 8, 2013 11:14 PM, "Benjamin Root" <ben...@ou...> wrote: > > Just a crazy thought, but why are we trying to treat "title" and such as properties? When I think of properties for matplotlib, I think of edgecolors, fontsize, and linestyles. Why don't we solve that problem first? In my mind there are several reasons. First, I personally see things like "title" as properties as well. I can see why not everyone would, but that would seem to me a reason to keep the setter functions at least in some cases rather than a reason to not implement properties. Second, it is more consistent. Users wouldn't need to remember on a case-by-basis whether to use a setter or a property. Third, it would require making sure the API is clan and consistent behind the scenes. The more complex setters like title would just be wrappers around the properties or property functions, so there would need to be ways to access the individual arguments on their own. That being said, it would be possible to implement properties in stages, with simpler ones done first and more complex ones done later. However, there are three reasons I did not include this in my proposed plan. First, it would mean we lose consistency, perhaps for a few releases. Second, it could lead to the API breakage being split over several releases rather than happening all at once. Third, if we do the behind-the-scenes cleanups first then this isn't an issue to begin with since complexities will already be dealt with. |
From: Thomas C. <tca...@gm...> - 2013-02-09 03:02:36
|
The bar is drawn from `y - yerr_low` to `y + yerr_upp` ax.errorbar(x + .5,y,yerr=[[y - yerr_low],[yerr_upp - y]],fmt='s',markersize=4) will get you what you want. Tom On Fri, Feb 8, 2013 at 8:41 PM, Markus Haider <mar...@ui...> wrote: > Hi, > > I think I have a problem with errorbars in a log plot. The problem is > reproducible through the enclosed errorbar_log.py file. As you can see I > plot a point with y = 10**(-5) and I want the errorbars drawn from > 10**(-5.5) to 10**(-4.5) which should be symmetric in this plot but isn't. > > Here is the content of my errorbar_log.py file: > > #!/usr/bin/python > import numpy as np > import matplotlib.pyplot as plt > > fig = plt.figure() > ax = fig.add_subplot(111) > x = 0.0 > y = 10**(-5.0) > yerr_low = 10**(-5.5) > yerr_upp = 10**(-4.5) > ax.errorbar(x,y,yerr=[[yerr_low],[yerr_upp]],fmt='o',markersize=4) > ax.set_xlim(-1.0,1.0) > ax.set_ylim(1E-6,1E-3) > ax.set_yscale('log') > plt.savefig('errorbar.png') > > --------------------------------------------- > > 10**(-5.5) = 3.162277660168379e-06 > and 10**(-4.5) = 3.1622776601683795e-05 > > but you can see that the lower boundary is not at the calculated value. > <http://matplotlib.1069221.n5.nabble.com/file/n40412/errorbar.png> > > > Do I misunderstand the behaviour of the errorbar function or is this a bug? > > Cheers, > Markus > > > > -- > View this message in context: http://matplotlib.1069221.n5.nabble.com/Errorbar-problem-tp40412.html > Sent from the matplotlib - devel mailing list archive at Nabble.com. > > ------------------------------------------------------------------------------ > Free Next-Gen Firewall Hardware Offer > Buy your Sophos next-gen firewall before the end March 2013 > and get the hardware for free! Learn more. > http://p.sf.net/sfu/sophos-d2d-feb > _______________________________________________ > Matplotlib-devel mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-devel -- Thomas Caswell tca...@gm... |
From: Markus H. <mar...@ui...> - 2013-02-09 02:41:20
|
Hi, I think I have a problem with errorbars in a log plot. The problem is reproducible through the enclosed errorbar_log.py file. As you can see I plot a point with y = 10**(-5) and I want the errorbars drawn from 10**(-5.5) to 10**(-4.5) which should be symmetric in this plot but isn't. Here is the content of my errorbar_log.py file: #!/usr/bin/python import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) x = 0.0 y = 10**(-5.0) yerr_low = 10**(-5.5) yerr_upp = 10**(-4.5) ax.errorbar(x,y,yerr=[[yerr_low],[yerr_upp]],fmt='o',markersize=4) ax.set_xlim(-1.0,1.0) ax.set_ylim(1E-6,1E-3) ax.set_yscale('log') plt.savefig('errorbar.png') --------------------------------------------- 10**(-5.5) = 3.162277660168379e-06 and 10**(-4.5) = 3.1622776601683795e-05 but you can see that the lower boundary is not at the calculated value. <http://matplotlib.1069221.n5.nabble.com/file/n40412/errorbar.png> Do I misunderstand the behaviour of the errorbar function or is this a bug? Cheers, Markus -- View this message in context: http://matplotlib.1069221.n5.nabble.com/Errorbar-problem-tp40412.html Sent from the matplotlib - devel mailing list archive at Nabble.com. |
From: Antony L. <ant...@be...> - 2013-02-08 19:29:02
|
Yes, I realize that this (or the += approach) was overdoing it. Separating the stuff in two different properties is probably more the way to go (at least, it's less crazy). Even the ax.title += (string, options) approach has the problem that this would imply ax.title (in the sense of ax.__dict__["title"].__get__(ax)) cannot be a string anymore, so this would involve some wrapper object. Ugh. Antony 2013/2/8 Todd <tod...@gm...> > On Fri, Feb 8, 2013 at 2:40 AM, Antony Lee <ant...@be...>wrote: > >> Hi, >> >> I saw that a discussion started on transitioning to the use of properties >> instead of explicit getters and setters, which seems like a very good idea >> to me... so I thought this would be a good idea to get involved in >> matplotlib-devel :) >> >> Right now an issue raised is what to do with set_* that take multiple >> arguments. Taking set_title, which takes both positional and keyword >> arguments, as an example, my idea would be to do >> >> ax.title = "A title" >> ax.title.fontdict = fontdict >> >> Basically, a property "foo" (in the matplotlib meaning of the word) >> becomes a descriptor with __get__ => get_foo and __set__ => set_foo, and >> keyword arguments to the old property setter become themselves descriptors >> on that descriptor. >> >> Antony >> >> > I think this makes it over-complicated. It is much simpler, more > explicit, and more consistent to have two properties here, one that only > deals with a string, and a second that only deals with a text object. Then > you can do something like (where titletext returns the text object): > > ax.titletext.fontdict > > That way we automatically get what you want without any additional work or > fancy tricks in a much cleaner, more explicit, and more predictable manner. > > > > ------------------------------------------------------------------------------ > Free Next-Gen Firewall Hardware Offer > Buy your Sophos next-gen firewall before the end March 2013 > and get the hardware for free! Learn more. > http://p.sf.net/sfu/sophos-d2d-feb > _______________________________________________ > Matplotlib-devel mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-devel > > |
From: Benjamin R. <ben...@ou...> - 2013-02-08 15:15:02
|
Just a crazy thought, but why are we trying to treat "title" and such as properties? When I think of properties for matplotlib, I think of edgecolors, fontsize, and linestyles. Why don't we solve that problem first? Cheers! Ben Root |
From: Todd <tod...@gm...> - 2013-02-08 10:30:58
|
On Fri, Feb 8, 2013 at 2:40 AM, Antony Lee <ant...@be...> wrote: > Hi, > > I saw that a discussion started on transitioning to the use of properties > instead of explicit getters and setters, which seems like a very good idea > to me... so I thought this would be a good idea to get involved in > matplotlib-devel :) > > Right now an issue raised is what to do with set_* that take multiple > arguments. Taking set_title, which takes both positional and keyword > arguments, as an example, my idea would be to do > > ax.title = "A title" > ax.title.fontdict = fontdict > > Basically, a property "foo" (in the matplotlib meaning of the word) > becomes a descriptor with __get__ => get_foo and __set__ => set_foo, and > keyword arguments to the old property setter become themselves descriptors > on that descriptor. > > Antony > > I think this makes it over-complicated. It is much simpler, more explicit, and more consistent to have two properties here, one that only deals with a string, and a second that only deals with a text object. Then you can do something like (where titletext returns the text object): ax.titletext.fontdict That way we automatically get what you want without any additional work or fancy tricks in a much cleaner, more explicit, and more predictable manner. |
From: Todd <tod...@gm...> - 2013-02-08 10:21:38
|
On Fri, Feb 8, 2013 at 3:38 AM, Jason Grout <jas...@cr...>wrote: > On 2/7/13 8:08 PM, Erik Bray wrote: > > A couple easier solutions: Allow > > the `.title` (and other such attributes) to be assigned to with a > > (value, options) tuple where the value is the title itself, and the > > options is a dictionary or tuple of supported options for the title. > > Interesting. Just brainstorming here...then > > ax.title += (None, moreoptions) > > could set more options (without changing the title text or already set > options), or > > ax.title -= (None, deleteoptions) > > could reset just certain options to default values. > > Thanks, > > Jason > I am not a fan of this approach. It seems to be trying to force a property to behave like a function when it isn't meant to behave like a function. In my mind a property is just that, a single aspect of an object. If you want to change another aspect, you need to change another property. So these "moreoptions" need to have their own properties, either in the axes object or, better yet, since they are properties of the title text, have them as properties of a text object. |
From: Todd <tod...@gm...> - 2013-02-08 10:15:50
|
On Fri, Feb 8, 2013 at 10:04 AM, Antony Lee <ant...@be...> wrote: > 2013/2/7 Erik Bray <eri...@gm...> > >> On Thu, Feb 7, 2013 at 8:40 PM, Antony Lee <ant...@be...> >> wrote: >> > Hi, >> > >> > I saw that a discussion started on transitioning to the use of >> properties >> > instead of explicit getters and setters, which seems like a very good >> idea >> > to me... so I thought this would be a good idea to get involved in >> > matplotlib-devel :) >> > >> > Right now an issue raised is what to do with set_* that take multiple >> > arguments. Taking set_title, which takes both positional and keyword >> > arguments, as an example, my idea would be to do >> > >> > ax.title = "A title" >> > ax.title.fontdict = fontdict >> > >> > Basically, a property "foo" (in the matplotlib meaning of the word) >> becomes >> > a descriptor with __get__ => get_foo and __set__ => set_foo, and keyword >> > arguments to the old property setter become themselves descriptors on >> that >> > descriptor. >> >> Unfortunately descriptors don't really work like that, because when >> you do `.title` on an instance that doesn't return the descriptor >> itself, it just returns the result of `__get__` on the descriptor. So >> in your example `.fontdict` would have to be an attribute on any >> string assigned as the title. So what you really have to do for this >> to work is to wrap every value returned by the descriptor in some kind >> of proxy that adds the appropriate extra attributes. It also has to >> do so in a way that the proxy can behave transparently like the >> wrapped object, and that none of the wrapped objects attributes are >> overshadowed. And it has to hypothetically work with instances any >> any arbitrary type or class. >> >> While this is somewhat doable for a limited set cases it's really more >> of a can of worms than it's worth. Believe me, I've tried to solve >> similar problems to this one before. A couple easier solutions: Allow >> the `.title` (and other such attributes) to be assigned to with a >> (value, options) tuple where the value is the title itself, and the >> options is a dictionary or tuple of supported options for the title. >> Another solution is to just keep set_title() for cases like this if >> one wishes to set the title with additional options (while still >> allowing `.title = 'foo'` for the simple case). >> > > Indeed, good catch. But another issue comes to my mind: should ax1.title > (that is, "ax1..title.__get__(ax1)" where ".." means no descriptor invoked) > return a string (like now) or something that contains all the properties of > the title? Returning a string copies the current behavior of get_title, > but "ax2.title = ax1.title" would not do what I expect (I would expect > every property related to the title to be copied). Now, if we want > "ax2.title = ax1.title" to work as I expect (what do other people think > here?), then there is no choice but to wrap the return value of __set__. > > Antony > > I think you are trying to make this too smart for its own good. I think things should work in a simple, consistent manner. If the property is set using a string, then it should return a string. If you assign a string to something, it should assign a string only. If you want to start copying other properties, we can use a separate property that accepts and returns a different object, which I am pretty sure was part of my proposal. This should be described in the documentation. So if you want the title fontdict, you get something like ax1.titletext.fontdict (where titletext is the property for a text object). Currently ax1.get_title returns a string, so ax2.set_title(ax1.get_title()) will only copy the string. If we want to change the defaults, so that the title-related methods work with text objects instead of strings, that is possible (although would be a major backwards-incompatible API break). But that is a separate discussion from MEP13, which only deals with the transition to properties. In all cases, under this proposal, I think properties should be kept as similar as possible to their setters and getters. API breaks should be a separate issue. |
From: Antony L. <ant...@be...> - 2013-02-08 09:04:13
|
Indeed, good catch. But another issue comes to my mind: should ax1.title (that is, "ax1..title.__get__(ax1)" where ".." means no descriptor invoked) return a string (like now) or something that contains all the properties of the title? Returning a string copies the current behavior of get_title, but "ax2.title = ax1.title" would not do what I expect (I would expect every property related to the title to be copied). Now, if we want "ax2.title = ax1.title" to work as I expect (what do other people think here?), then there is no choice but to wrap the return value of __set__. Antony 2013/2/7 Erik Bray <eri...@gm...> > On Thu, Feb 7, 2013 at 8:40 PM, Antony Lee <ant...@be...> > wrote: > > Hi, > > > > I saw that a discussion started on transitioning to the use of properties > > instead of explicit getters and setters, which seems like a very good > idea > > to me... so I thought this would be a good idea to get involved in > > matplotlib-devel :) > > > > Right now an issue raised is what to do with set_* that take multiple > > arguments. Taking set_title, which takes both positional and keyword > > arguments, as an example, my idea would be to do > > > > ax.title = "A title" > > ax.title.fontdict = fontdict > > > > Basically, a property "foo" (in the matplotlib meaning of the word) > becomes > > a descriptor with __get__ => get_foo and __set__ => set_foo, and keyword > > arguments to the old property setter become themselves descriptors on > that > > descriptor. > > Unfortunately descriptors don't really work like that, because when > you do `.title` on an instance that doesn't return the descriptor > itself, it just returns the result of `__get__` on the descriptor. So > in your example `.fontdict` would have to be an attribute on any > string assigned as the title. So what you really have to do for this > to work is to wrap every value returned by the descriptor in some kind > of proxy that adds the appropriate extra attributes. It also has to > do so in a way that the proxy can behave transparently like the > wrapped object, and that none of the wrapped objects attributes are > overshadowed. And it has to hypothetically work with instances any > any arbitrary type or class. > > While this is somewhat doable for a limited set cases it's really more > of a can of worms than it's worth. Believe me, I've tried to solve > similar problems to this one before. A couple easier solutions: Allow > the `.title` (and other such attributes) to be assigned to with a > (value, options) tuple where the value is the title itself, and the > options is a dictionary or tuple of supported options for the title. > Another solution is to just keep set_title() for cases like this if > one wishes to set the title with additional options (while still > allowing `.title = 'foo'` for the simple case). > |
From: Jason G. <jas...@cr...> - 2013-02-08 02:58:01
|
On 2/7/13 8:08 PM, Erik Bray wrote: > A couple easier solutions: Allow > the `.title` (and other such attributes) to be assigned to with a > (value, options) tuple where the value is the title itself, and the > options is a dictionary or tuple of supported options for the title. Interesting. Just brainstorming here...then ax.title += (None, moreoptions) could set more options (without changing the title text or already set options), or ax.title -= (None, deleteoptions) could reset just certain options to default values. Thanks, Jason |
From: Erik B. <eri...@gm...> - 2013-02-08 02:08:44
|
On Thu, Feb 7, 2013 at 8:40 PM, Antony Lee <ant...@be...> wrote: > Hi, > > I saw that a discussion started on transitioning to the use of properties > instead of explicit getters and setters, which seems like a very good idea > to me... so I thought this would be a good idea to get involved in > matplotlib-devel :) > > Right now an issue raised is what to do with set_* that take multiple > arguments. Taking set_title, which takes both positional and keyword > arguments, as an example, my idea would be to do > > ax.title = "A title" > ax.title.fontdict = fontdict > > Basically, a property "foo" (in the matplotlib meaning of the word) becomes > a descriptor with __get__ => get_foo and __set__ => set_foo, and keyword > arguments to the old property setter become themselves descriptors on that > descriptor. Unfortunately descriptors don't really work like that, because when you do `.title` on an instance that doesn't return the descriptor itself, it just returns the result of `__get__` on the descriptor. So in your example `.fontdict` would have to be an attribute on any string assigned as the title. So what you really have to do for this to work is to wrap every value returned by the descriptor in some kind of proxy that adds the appropriate extra attributes. It also has to do so in a way that the proxy can behave transparently like the wrapped object, and that none of the wrapped objects attributes are overshadowed. And it has to hypothetically work with instances any any arbitrary type or class. While this is somewhat doable for a limited set cases it's really more of a can of worms than it's worth. Believe me, I've tried to solve similar problems to this one before. A couple easier solutions: Allow the `.title` (and other such attributes) to be assigned to with a (value, options) tuple where the value is the title itself, and the options is a dictionary or tuple of supported options for the title. Another solution is to just keep set_title() for cases like this if one wishes to set the title with additional options (while still allowing `.title = 'foo'` for the simple case). |
From: Erik B. <eri...@gm...> - 2013-02-08 01:46:20
|
On Wed, Jan 30, 2013 at 9:27 PM, Damon McDougall <dam...@gm...> wrote: > On Wed, Jan 30, 2013 at 8:44 AM, Michael Droettboom <md...@st...> wrote: >> In discussions with Perry Greenfield at STScI, it seems we are in the >> position of being able to get some financial support to pay for a >> continuous integration system. >> >> Travis has shown itself to be rather glitchy for matplotlib. The tight >> integration with Github PRs is really convenient. However, matplotlib >> has longer test runs and more dependencies than many projects. The >> frequent false positives start to wear down at a certain point. And we >> still aren't testing everything because we can't aren't installing >> Inkscape and other things in the Travis VM. >> >> So we're looking to add another paid, hosted continuous integration >> service that will better meet our needs. A hosted service is nice >> because it's easy to give multiple developers access to the system so >> anyone can tweak it and keep it going -- the bottleneck of a single >> developer responsible for maintenance of the build machine was a problem >> years ago when we were using buildbot. This may remain "in addition to" >> rather than "instead of" Travis for some time. >> >> An obvious first choice to me is ShiningPanda, as I have experience >> using it for astropy. Jenkins (the software Shining Panda is based on), >> is a really easy-to-use system, for those not familiar with it. And we >> can store the output of the tests (i.e. the result_images) for later >> inspection. I think this feature alone is huge for matplotlib. They >> also offer Windows build slaves. There is no OS-X (probably because >> Apple licensing doesn't really allow for use in a VM), but results can >> be "published" to their Jenkins instance. >> >> Are there any other similar alternatives we should consider before we >> move forward? >> >> Mike > > I think hosted infrastructure is the right choice. I was initially > going to suggest that we try and work with a bespoke solution. That > way we could roll our own build architectures. > > On reflection I think the maintenance headache of managing our own > build slaves outweighs the convenience of having it hosted, as you > point out. Of course, you're still going to need people who are willing/able to maintain OSX build slaves if you want to do testing on OSX (which obviously you should). It's easy with Jenkins to run your own instances and have it push results to the Shining Panda instance or any other hosted service. But otherwise you're back to square one in terms of having to rely on the people running the OSX builds. We've had this problem on Astropy in that I'm maintaining our current only Windows machine (ShingingPanda does have Windows support but a a cost) and so whenever the build bot itself breaks on Windows it's up to me to do anything about it. It also makes it hard for other admins to make tweaks to the build configuration. Unfortunately you're probably going to have that problem with OSX and probably Windows with any other hosted service as well. Erik |
From: Antony L. <ant...@be...> - 2013-02-08 01:40:53
|
Hi, I saw that a discussion started on transitioning to the use of properties instead of explicit getters and setters, which seems like a very good idea to me... so I thought this would be a good idea to get involved in matplotlib-devel :) Right now an issue raised is what to do with set_* that take multiple arguments. Taking set_title, which takes both positional and keyword arguments, as an example, my idea would be to do ax.title = "A title" ax.title.fontdict = fontdict Basically, a property "foo" (in the matplotlib meaning of the word) becomes a descriptor with __get__ => get_foo and __set__ => set_foo, and keyword arguments to the old property setter become themselves descriptors on that descriptor. Antony |
From: Michael D. <md...@st...> - 2013-02-01 15:33:11
|
On 02/01/2013 09:11 AM, Todd wrote: > Is there a process that someone needs to go through to get a pull > request merged into master? Is there a particular pull request that you think has stalled, or you just want to know the process in general? If the former -- just ping us on the mailing list if you think something has been stuck for too long. If the latter, there is documentation here: http://matplotlib.org/devel/gitwash/index.html Is this page is a checklst of the things to include in a complete pull request: http://matplotlib.org/devel/coding_guide.html Mike > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_jan > > > _______________________________________________ > Matplotlib-devel mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-devel |
From: Benjamin R. <ben...@ou...> - 2013-02-01 15:32:51
|
Usually, just simply pinging the devs via the comments in your PR is enough to bring our attention back to the PR. The squeaky wheel gets the grease. Cheers! Ben Root |