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
|
2
|
3
(3) |
4
(6) |
5
(5) |
6
(5) |
7
|
8
|
9
(1) |
10
(5) |
11
(11) |
12
(6) |
13
(6) |
14
(4) |
15
(1) |
16
(1) |
17
(10) |
18
(20) |
19
(5) |
20
(7) |
21
(1) |
22
|
23
|
24
|
25
(1) |
26
(3) |
27
(1) |
28
|
29
(1) |
30
(2) |
31
(3) |
|
|
|
|
|
From: Chloe L. <ch...@be...> - 2012-12-11 19:37:55
|
Would it be workable for the default to be proportional to the size of the array passed in? (suggested only because I do that myself, when deciding how coarse an investigative plot I can get away with.) &C On Dec 11, 2012, at 9:28 AM, Benjamin Root wrote: > > > On Tue, Dec 11, 2012 at 12:17 PM, Ethan Gutmann <eth...@gm...> wrote: > > This is because the default rstride and cstride arguments is 10, IIRC. Since your array is only 12x12, the surface plotting is barely plotting anything. Try calling: > > > > ax.plot_surface(x, y, a, rstride=1, cstride=1) > > > You know, this has tripped me up a few times too. I don't use plot_surface often enough to always remember this, and it is not the first parameter I think to check when debugging a program. Is there a reason the default rstride and cstride aren't 1 other than possible memory constraints for large arrays? > > I suppose changing the defaults might break programs that rely on this behavior, but if this API ever gets revamped, consider this a request to make 1 be the default instead. I would think that the default should be that the obvious command "just works" while plots that may require too much memory can be tweaked to work faster (I'm assuming that is the reason for the default of 10). > > > I actually don't know the reason for the defaults (I didn't create mplot3d), but that has always been my suspicion. There is an existing PR to change the default behavior to be somewhat "automatic". At the time, I wasn't really in favor of it, but when looked in this light, it does make some more sense. > > I'll have to think about this a bit more. > Ben Root > > ------------------------------------------------------------------------------ > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial > Remotely access PCs and mobile devices and provide instant support > Improve your efficiency, and focus on delivering more value-add services > Discover what IT Professionals Know. Rescue delivers > http://p.sf.net/sfu/logmein_12329d2d_______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users |
From: Benjamin R. <ben...@ou...> - 2012-12-11 19:16:56
|
On Tue, Dec 11, 2012 at 2:08 PM, Chloe Lewis <ch...@be...> wrote: > Would it be workable for the default to be proportional to the size of the > array passed in? (suggested only because I do that myself, when deciding > how coarse an investigative plot I can get away with.) > > &C > > That is pretty much what the PR I was referring to does: https://github.com/matplotlib/matplotlib/pull/1040 It makes it so that the behavior of both plot_surface and plot_wireframe is the same in this respect. So, by default, the rstride and cstride would be 1% of the size of your data array. This would make the default for the recent example be 1, therefore showing every point. I wonder if a logarithmic default would make sense to better handle large data arrays? Thoughts? Ben Root |
From: Benjamin R. <ben...@ou...> - 2012-12-11 17:28:51
|
On Tue, Dec 11, 2012 at 12:17 PM, Ethan Gutmann <eth...@gm...>wrote: > > This is because the default rstride and cstride arguments is 10, IIRC. > Since your array is only 12x12, the surface plotting is barely plotting > anything. Try calling: > > > > ax.plot_surface(x, y, a, rstride=1, cstride=1) > > > You know, this has tripped me up a few times too. I don't use > plot_surface often enough to always remember this, and it is not the first > parameter I think to check when debugging a program. Is there a reason the > default rstride and cstride aren't 1 other than possible memory constraints > for large arrays? > > I suppose changing the defaults might break programs that rely on this > behavior, but if this API ever gets revamped, consider this a request to > make 1 be the default instead. I would think that the default should be > that the obvious command "just works" while plots that may require too much > memory can be tweaked to work faster (I'm assuming that is the reason for > the default of 10). > > I actually don't know the reason for the defaults (I didn't create mplot3d), but that has always been my suspicion. There is an existing PR to change the default behavior to be somewhat "automatic". At the time, I wasn't really in favor of it, but when looked in this light, it does make some more sense. I'll have to think about this a bit more. Ben Root |
From: Ethan G. <eth...@gm...> - 2012-12-11 17:17:56
|
> This is because the default rstride and cstride arguments is 10, IIRC. Since your array is only 12x12, the surface plotting is barely plotting anything. Try calling: > > ax.plot_surface(x, y, a, rstride=1, cstride=1) You know, this has tripped me up a few times too. I don't use plot_surface often enough to always remember this, and it is not the first parameter I think to check when debugging a program. Is there a reason the default rstride and cstride aren't 1 other than possible memory constraints for large arrays? I suppose changing the defaults might break programs that rely on this behavior, but if this API ever gets revamped, consider this a request to make 1 be the default instead. I would think that the default should be that the obvious command "just works" while plots that may require too much memory can be tweaked to work faster (I'm assuming that is the reason for the default of 10). thanks Ethan |
From: Benjamin R. <ben...@ou...> - 2012-12-11 14:38:48
|
On Tue, Dec 11, 2012 at 8:25 AM, Degang Wu <sam...@gm...> wrote: > Hi, > > My OS is Mac OS X Lion, and the version of matplotlib is 1.2.0 from > macport. > > Now I have an 2d array > > a=array([[ 0. , 0. , 0. , 0. , > 0. , 0. , 0. , 0. , > 0. , 0. , 0. , 0. ], > [ 0. , 0. , 0. , 0. , > 0. , 0. , 0. , 0. , > 0. , 0. , 0. , 0. ], > [ 0. , 0. , 0. , 0. , > 0. , 0. , 0. , 0. , > 0. , 0. , 0. , 0. ], > [ 0. , 0. , 0. , 0. , > 0. , 0. , 0. , 0. , > 0. , 0. , 0. , 0. ], > [ 0. , 0. , 0. , 0. , > 0. , 6.40312424, 19.02629759, 9.8488578 , > 12.16552506, 14. , 0. , 37.01351105], > [ 0. , 0. , 0. , 0. , > 6.40312424, 4.24264069, 1.41421356, 8.54400375, > 4.47213595, 31.25699922, 0. , 25.70992026], > [ 0. , 0. , 0. , 0. , > 19.02629759, 1.41421356, 17.2626765 , 31.32091953, > 24.18677324, 43.829214 , 0. , 55.14526272], > [ 0. , 0. , 0. , 0. , > 9.8488578 , 8.54400375, 31.32091953, 35.51056181, > 40.81666326, 57.27128425, 0. , 84.62860037], > [ 0. , 0. , 0. , 0. , > 12.16552506, 4.47213595, 24.18677324, 40.81666326, > 43.65775991, 74.24957912, 0. , 112.0044642 ], > [ 0. , 0. , 0. , 0. , > 14. , 31.25699922, 43.829214 , 57.27128425, > 74.24957912, 0. , 0. , 0. ], > [ 0. , 0. , 0. , 0. , > 0. , 0. , 0. , 0. , > 0. , 0. , 0. , 0. ], > [ 0. , 0. , 0. , 0. , > 37.01351105, 25.70992026, 55.14526272, 84.62860037, > 112.0044642 , 0. , 0. , 0. ]]) > > first I plot it (in ipython notebook) using: > > coord_max=12 > fig = plt.figure() > ax = fig.gca(projection='3d') > x,y=np.meshgrid(np.arange(coord_max),np.arange(coord_max)) > ax.plot_wireframe(x,y,a) > > and the plot looks fine. > > but if I use plot_surface instead, the plot looks very wrong: the plot is > zero everywhere except on the boundaries. > This is because the default rstride and cstride arguments is 10, IIRC. Since your array is only 12x12, the surface plotting is barely plotting anything. Try calling: ax.plot_surface(x, y, a, rstride=1, cstride=1) I hope that helps! Ben Root |
From: Degang Wu <sam...@gm...> - 2012-12-11 13:25:29
|
Hi, My OS is Mac OS X Lion, and the version of matplotlib is 1.2.0 from macport. Now I have an 2d array a=array([[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0. , 6.40312424, 19.02629759, 9.8488578 , 12.16552506, 14. , 0. , 37.01351105], [ 0. , 0. , 0. , 0. , 6.40312424, 4.24264069, 1.41421356, 8.54400375, 4.47213595, 31.25699922, 0. , 25.70992026], [ 0. , 0. , 0. , 0. , 19.02629759, 1.41421356, 17.2626765 , 31.32091953, 24.18677324, 43.829214 , 0. , 55.14526272], [ 0. , 0. , 0. , 0. , 9.8488578 , 8.54400375, 31.32091953, 35.51056181, 40.81666326, 57.27128425, 0. , 84.62860037], [ 0. , 0. , 0. , 0. , 12.16552506, 4.47213595, 24.18677324, 40.81666326, 43.65775991, 74.24957912, 0. , 112.0044642 ], [ 0. , 0. , 0. , 0. , 14. , 31.25699922, 43.829214 , 57.27128425, 74.24957912, 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 37.01351105, 25.70992026, 55.14526272, 84.62860037, 112.0044642 , 0. , 0. , 0. ]]) first I plot it (in ipython notebook) using: coord_max=12 fig = plt.figure() ax = fig.gca(projection='3d') x,y=np.meshgrid(np.arange(coord_max),np.arange(coord_max)) ax.plot_wireframe(x,y,a) and the plot looks fine. but if I use plot_surface instead, the plot looks very wrong: the plot is zero everywhere except on the boundaries. |
From: Chao Y. <cha...@gm...> - 2012-12-11 09:57:48
|
Dear all, I checked and it seems that we don't have rc Parameters for colorbar? could it be desirable? Chao -- *********************************************************************************** Chao YUE Laboratoire des Sciences du Climat et de l'Environnement (LSCE-IPSL) UMR 1572 CEA-CNRS-UVSQ Batiment 712 - Pe 119 91191 GIF Sur YVETTE Cedex Tel: (33) 01 69 08 29 02; Fax:01.69.08.77.16 ************************************************************************************ |
From: Joe K. <jof...@gm...> - 2012-12-11 00:27:46
|
On Mon, Dec 10, 2012 at 2:45 AM, Phil Elson <pel...@gm...> wrote: > Hi Joe, > > Thanks for bringing this up, it is certainly valuable to highlight this on > the mailinglist. As you say, the change is hard to spot and, I agree, makes > library code supporting v1.1.1 and v1.2 harder than one would like. > Typically, anything which is going to break core APIs (even slightly) > should be documented under the "API Changes" page here > http://matplotlib.org/api/api_changes.html#changes-in-1-2-x . Thanks! I wasn't aware of that page! (and it does a very nice job of documenting the changes!) > You will find there were quite a few changes made relating to transforms > which I think is entirely my doing, so at least we know who the guilty > party is :-) > > Thanks for spotting the example failure - I split these changes over many > separate pull requests and did scan the gallery for any noticeable changes, > but this one must have slipped the net. > > If you're still having problems with using the newer transform API, please > shout and I'd be happy to have a look for you. > Will do, thanks for the offer! > > All the best, > > Phil > > > On 9 December 2012 22:10, Joe Kington <jof...@gm...> wrote: > >> Hi folks, >> >> At some point transforms.Transform was slightly refactored. >> (Particularly, this commit: >> https://github.com/matplotlib/matplotlib/commit/8bbe2e55f29b28ba558504b27596b8e36a087c1c) This changed what methods need to be overridden when subclassing >> Transform. >> >> All in all, it seems like a very sensible change, but it led to some very >> hard-to-find bugs in some of my code that subclasses transforms.Transform. >> I thought I would mention it on the mailing list for anyone else that uses >> custom projections. Forgive me if it was mentioned earlier and I just >> didn't notice. >> >> With versions 1.1.x and older, one had to directly implement a transformmethod when subclassingtransforms.Transform, >> otherwise a NotImplemented error would be raised. >> >> With versions 1.2.x and newer, the preferred way appears to be to >> implement things in a separate transform_affine or transform_non_affinemethod and not explicitly implement a >> transform method. >> >> If you implement the non-affine portion directly in the transform method >> without overriding transform_non_affine, it leads to strange drawing >> bugs with v1.2 that did not occur with older versions. (For example, this >> broke one of the examples in the gallery between 1.1. and 1.2: >> http://matplotlib.org/1.1.1/examples/api/custom_projection_example.html >> http://matplotlib.org/1.2.0/examples/api/custom_projection_example.html. I just submitted a pull request to update the example, by the way.) >> >> On the other hand, for compatibility with versions 1.1 and older, you >> have to explicitly implement the transform method as well, otherwise >> you'll get the NotImplemented error. >> >> Therefore, now one needs to explicitly implement *_both_* the >> transform_non_affine and transform methods of a custom non-affine >> transform for compatibility with 1.1 and older as well as 1.2 and newer. >> >> Similarly, one needs to implement* _both_ *the transform_path_non_affineand the >> transform_path methods for compatibility with newer and older versions >> of matplotlib. >> >> Arguably, it should have always been done this way, but based onexamples/api/custom_projection_example.py, >> I (and I suspect many other people as well) implemented the transform >> directly as the transform method when subclassing Transform, instead of >> separately in a transform_affine or transform_non_affine method. >> >> Is this a large enough change to warrant a mention in the changelog? (On >> the other hand, the mailing list probably gets a lot more eyes on it than >> the changelog...) >> >> Thanks! >> -Joe >> >> >> >> ------------------------------------------------------------------------------ >> LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial >> Remotely access PCs and mobile devices and provide instant support >> Improve your efficiency, and focus on delivering more value-add services >> Discover what IT Professionals Know. Rescue delivers >> http://p.sf.net/sfu/logmein_12329d2d >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> >> > |
From: Timothy D. <tim...@gm...> - 2012-12-10 22:49:34
|
Paul, Actually, I didn't realize that you had to change the backend in the matplotlibrc file. Once I changed it to 'Qt4Agg', everything worked. Thanks! (to find out where your matplotlibrc file is: "matplotlib.matplotlib_fname()" ) Tim On Mon, Dec 10, 2012 at 2:34 PM, Timothy Duly <tim...@gm...> wrote: > Paul, > > I am using the "agg" backend: > > In [1]: import matplotlib > > In [2]: matplotlib.rcParams['backend'] > Out[2]: 'agg' > > > I was able to switch it to the one you have: > > In [12]: import matplotlib > In [13]: matplotlib.rcParams['backend'] = 'Qt4Agg' > > but still a simple "plot(1,1)" resulted in no plot being shown. > > Thanks, > Tim > > > > > > On Mon, Dec 10, 2012 at 2:20 PM, Paul Hobson <pmh...@gm...> wrote: > >> On Mon, Dec 10, 2012 at 12:15 PM, Timothy Duly <tim...@gm...>wrote: >> >>> Hi, >>> >>> I recently upgraded to matplotlib v1.2.0 on my Linux machine. For some >>> reason, plots are not appearing at all on my screen whenever I try to plot >>> any routines. >>> >>> When I open the interpreter with "ipython --pylab" and do >>> >>> In [1]: plot(1,1) >>> Out[1]: [<matplotlib.lines.Line2D object at 0x2a40450>] >>> >>> No plot shows up. This is somewhat strange as no other error shows up >>> either. Does anyone know of a way to debug this? I'm not sure where to >>> start. >>> >>> I also tried to run a simple plot in a script with >>> >>> from matplotlib.pyplot import * >>> figure() >>> plot(1,1) >>> draw(); show() >>> >>> and still had no success. >>> >>> Thanks, >>> Tim >>> >> >> Which backend are you using? >> >> In [1]: import matplotlib >> >> In [2]: matplotlib.rcParams['backend'] >> >> Out[2]: 'Qt4Agg' >> > > |
From: Timothy D. <tim...@gm...> - 2012-12-10 20:34:52
|
Paul, I am using the "agg" backend: In [1]: import matplotlib In [2]: matplotlib.rcParams['backend'] Out[2]: 'agg' I was able to switch it to the one you have: In [12]: import matplotlib In [13]: matplotlib.rcParams['backend'] = 'Qt4Agg' but still a simple "plot(1,1)" resulted in no plot being shown. Thanks, Tim On Mon, Dec 10, 2012 at 2:20 PM, Paul Hobson <pmh...@gm...> wrote: > On Mon, Dec 10, 2012 at 12:15 PM, Timothy Duly <tim...@gm...> wrote: > >> Hi, >> >> I recently upgraded to matplotlib v1.2.0 on my Linux machine. For some >> reason, plots are not appearing at all on my screen whenever I try to plot >> any routines. >> >> When I open the interpreter with "ipython --pylab" and do >> >> In [1]: plot(1,1) >> Out[1]: [<matplotlib.lines.Line2D object at 0x2a40450>] >> >> No plot shows up. This is somewhat strange as no other error shows up >> either. Does anyone know of a way to debug this? I'm not sure where to >> start. >> >> I also tried to run a simple plot in a script with >> >> from matplotlib.pyplot import * >> figure() >> plot(1,1) >> draw(); show() >> >> and still had no success. >> >> Thanks, >> Tim >> > > Which backend are you using? > > In [1]: import matplotlib > > In [2]: matplotlib.rcParams['backend'] > > Out[2]: 'Qt4Agg' > |
From: Paul H. <pmh...@gm...> - 2012-12-10 20:20:12
|
On Mon, Dec 10, 2012 at 12:15 PM, Timothy Duly <tim...@gm...> wrote: > Hi, > > I recently upgraded to matplotlib v1.2.0 on my Linux machine. For some > reason, plots are not appearing at all on my screen whenever I try to plot > any routines. > > When I open the interpreter with "ipython --pylab" and do > > In [1]: plot(1,1) > Out[1]: [<matplotlib.lines.Line2D object at 0x2a40450>] > > No plot shows up. This is somewhat strange as no other error shows up > either. Does anyone know of a way to debug this? I'm not sure where to > start. > > I also tried to run a simple plot in a script with > > from matplotlib.pyplot import * > figure() > plot(1,1) > draw(); show() > > and still had no success. > > Thanks, > Tim > Which backend are you using? In [1]: import matplotlib In [2]: matplotlib.rcParams['backend'] Out[2]: 'Qt4Agg' |
From: Timothy D. <tim...@gm...> - 2012-12-10 20:15:54
|
Hi, I recently upgraded to matplotlib v1.2.0 on my Linux machine. For some reason, plots are not appearing at all on my screen whenever I try to plot any routines. When I open the interpreter with "ipython --pylab" and do In [1]: plot(1,1) Out[1]: [<matplotlib.lines.Line2D object at 0x2a40450>] No plot shows up. This is somewhat strange as no other error shows up either. Does anyone know of a way to debug this? I'm not sure where to start. I also tried to run a simple plot in a script with from matplotlib.pyplot import * figure() plot(1,1) draw(); show() and still had no success. Thanks, Tim |
From: Phil E. <pel...@gm...> - 2012-12-10 08:45:53
|
Hi Joe, Thanks for bringing this up, it is certainly valuable to highlight this on the mailinglist. As you say, the change is hard to spot and, I agree, makes library code supporting v1.1.1 and v1.2 harder than one would like. Typically, anything which is going to break core APIs (even slightly) should be documented under the "API Changes" page here http://matplotlib.org/api/api_changes.html#changes-in-1-2-x . You will find there were quite a few changes made relating to transforms which I think is entirely my doing, so at least we know who the guilty party is :-) Thanks for spotting the example failure - I split these changes over many separate pull requests and did scan the gallery for any noticeable changes, but this one must have slipped the net. If you're still having problems with using the newer transform API, please shout and I'd be happy to have a look for you. All the best, Phil On 9 December 2012 22:10, Joe Kington <jof...@gm...> wrote: > Hi folks, > > At some point transforms.Transform was slightly refactored. > (Particularly, this commit: > https://github.com/matplotlib/matplotlib/commit/8bbe2e55f29b28ba558504b27596b8e36a087c1c) This changed what methods need to be overridden when subclassing > Transform. > > All in all, it seems like a very sensible change, but it led to some very > hard-to-find bugs in some of my code that subclasses transforms.Transform. > I thought I would mention it on the mailing list for anyone else that uses > custom projections. Forgive me if it was mentioned earlier and I just > didn't notice. > > With versions 1.1.x and older, one had to directly implement a transformmethod when subclassingtransforms.Transform, > otherwise a NotImplemented error would be raised. > > With versions 1.2.x and newer, the preferred way appears to be to > implement things in a separate transform_affine or transform_non_affinemethod and not explicitly implement a > transform method. > > If you implement the non-affine portion directly in the transform method > without overriding transform_non_affine, it leads to strange drawing bugs > with v1.2 that did not occur with older versions. (For example, this broke > one of the examples in the gallery between 1.1. and 1.2: > http://matplotlib.org/1.1.1/examples/api/custom_projection_example.html > http://matplotlib.org/1.2.0/examples/api/custom_projection_example.html . > I just submitted a pull request to update the example, by the way.) > > On the other hand, for compatibility with versions 1.1 and older, you have > to explicitly implement the transform method as well, otherwise you'll > get the NotImplemented error. > > Therefore, now one needs to explicitly implement *_both_* the > transform_non_affine and transform methods of a custom non-affine > transform for compatibility with 1.1 and older as well as 1.2 and newer. > > Similarly, one needs to implement* _both_ *the transform_path_non_affineand the > transform_path methods for compatibility with newer and older versions of > matplotlib. > > Arguably, it should have always been done this way, but based onexamples/api/custom_projection_example.py, > I (and I suspect many other people as well) implemented the transform > directly as the transform method when subclassing Transform, instead of > separately in a transform_affine or transform_non_affine method. > > Is this a large enough change to warrant a mention in the changelog? (On > the other hand, the mailing list probably gets a lot more eyes on it than > the changelog...) > > Thanks! > -Joe > > > > ------------------------------------------------------------------------------ > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial > Remotely access PCs and mobile devices and provide instant support > Improve your efficiency, and focus on delivering more value-add services > Discover what IT Professionals Know. Rescue delivers > http://p.sf.net/sfu/logmein_12329d2d > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > |
From: Joe K. <jof...@gm...> - 2012-12-09 22:11:01
|
Hi folks, At some point transforms.Transform was slightly refactored. (Particularly, this commit: https://github.com/matplotlib/matplotlib/commit/8bbe2e55f29b28ba558504b27596b8e36a087c1c) This changed what methods need to be overridden when subclassing Transform. All in all, it seems like a very sensible change, but it led to some very hard-to-find bugs in some of my code that subclasses transforms.Transform. I thought I would mention it on the mailing list for anyone else that uses custom projections. Forgive me if it was mentioned earlier and I just didn't notice. With versions 1.1.x and older, one had to directly implement a transformmethod when subclassingtransforms.Transform, otherwise a NotImplemented error would be raised. With versions 1.2.x and newer, the preferred way appears to be to implement things in a separate transform_affine or transform_non_affine method and not explicitly implement a transform method. If you implement the non-affine portion directly in the transform method without overriding transform_non_affine, it leads to strange drawing bugs with v1.2 that did not occur with older versions. (For example, this broke one of the examples in the gallery between 1.1. and 1.2: http://matplotlib.org/1.1.1/examples/api/custom_projection_example.html http://matplotlib.org/1.2.0/examples/api/custom_projection_example.html . I just submitted a pull request to update the example, by the way.) On the other hand, for compatibility with versions 1.1 and older, you have to explicitly implement the transform method as well, otherwise you'll get the NotImplemented error. Therefore, now one needs to explicitly implement *_both_* the transform_non_affine and transform methods of a custom non-affine transform for compatibility with 1.1 and older as well as 1.2 and newer. Similarly, one needs to implement* _both_ *the transform_path_non_affineand the transform_path methods for compatibility with newer and older versions of matplotlib. Arguably, it should have always been done this way, but based onexamples/api/custom_projection_example.py, I (and I suspect many other people as well) implemented the transform directly as the transform method when subclassing Transform, instead of separately in a transform_affine or transform_non_affine method. Is this a large enough change to warrant a mention in the changelog? (On the other hand, the mailing list probably gets a lot more eyes on it than the changelog...) Thanks! -Joe |
From: Oliver K. <oli...@gm...> - 2012-12-06 18:17:38
|
Incidentally, if anyone else wants to do this and is unable to update their matplotlib to v1.2.0, this code snippet achieves the same effect. ####################################### import numpy as np import matplotlib.pyplot as plt from matplotlib.collections import LineCollection # the line to plot x = np.linspace(0,1,101) y = x*0.5-0.25 scaling = np.exp(-(x-0.5)**2/0.5**2) # scale the transparency of the line according to this points = np.array([x, y]).T.reshape(-1, 1, 2) segments = np.concatenate([points[:-1], points[1:]], axis=1) smin = scaling.min() smax = scaling.max() # inline function to convert scaling value to alpha value in [0,1] alpha = lambda s0: (s0-smin)/(smax-smin) # create a (r,g,b,a) color description for each line segment cmap = [] for a in segments: # the x-value for this segment is: x0 = a.mean(0)[0] # so it has a scaling value of: s0 = np.interp(x0,x,scaling) # and it has an alpha value of: a0 = alpha(s0) cmap.append([0.0,0.0,0.0,a0]) # Create the line collection object, and set the color parameters. lc = LineCollection(segments) lc.set_color(cmap) ax = plt.subplot(111) ax.add_collection(lc) ax.set_xlim(x.min(), x.max()) ax.set_ylim(y.min(), y.max()) plt.show() ####################################### |
From: Jason G. <jas...@cr...> - 2012-12-06 16:40:21
|
On 12/5/12 8:36 PM, Dale Lukas Peterson wrote: > I have a time series of 32-bit unsigned integers in the form of a > numpy array with dtype=numpy.uint32. The bits of each integer in > array correspond to various boolean states collected during an > experiment. I would like to make a plot this data in the following > way: > 1) time on the horizontal axis (I have a time array of the same > length as my integer array) > 2) bit position N on the vertical axis (0-1 corresponds to bit 0, 1-2 > corresponds to bit 1, etc.) > 3) a solid filled rectangle from (t1, N) to (t1+dt, N+1) whenever the > bit is high. > > I been able to use the bitwise_and() and right_shift() on the data to > get individual arrays which are populated with only 0's and1's. > > What I'm not clear on is now how to get the solid filled rectangle for > areas where the bit is high and nothing when the bit is low. > > Is there already this functionality somewhere in matplotlib? I looked > in the gallery and couldn't find anything quite like what I'm looking > for, though I may have simply missed it. If there isn't, I'm sure > there is a way to do it, does anybody have any recommendations as to > the path of least resistance? Just FYI, this reminds me a lot of the recent EventRaster discussion: http://thread.gmane.org/gmane.comp.python.matplotlib.devel/11458/focus=11655 Thanks, Jason |
From: Oliver K. <oli...@gm...> - 2012-12-06 16:06:08
|
Hi Luke, > I been able to use the bitwise_and() and right_shift() on the data to > get individual arrays which are populated with only 0's and1's. > > What I'm not clear on is now how to get the solid filled rectangle for > areas where the bit is high and nothing when the bit is low. > > Is there already this functionality somewhere in matplotlib? I looked > in the gallery and couldn't find anything quite like what I'm looking > for, though I may have simply missed it. If there isn't, I'm sure > there is a way to do it, does anybody have any recommendations as to > the path of least resistance? How about using imshow()? Turn your individual arrays into a three-dimensional array of (r,g,b,a) values (MxNx4 array). You can then overwrite the axis labels (pixel numbers) with the boolean state descriptors and the time stamps. Cheers, Oliver |
From: Jeroen H. <jer...@gm...> - 2012-12-06 12:41:26
|
Dear Matplotlibers, I'm trying to insert a logo image (from PNG) in the top left corner of my axes. I'm doing this by reading the logo using read_png() and inserting it as an OffsetImage in an AnnotationBox. When saving the figure as PNG everything is based on pixel sizes and I know how to scale the OffsetImage such that I end up with the desired logo size (based on the figure and logo sizes in pixels). Saving as PDF, however, does not depend on pixel sizes, and I end up with a 'different' size of the logo. Could someone please tell me what determines the size of the OffsetImage when saving as PDF? And maybe even better, how to achieve scaling that results in the same size logo as in the PNG output? I have attached: 1a) A small test.py script that produces PNG and PDF output showing the different logo sizes. Uncommenting the zoom_factor line shows how to scale the logo independent of the figure size/dpi settings. 1b) A dummy PNG logo file. 2) Two example output files (PNG and PDF) showing the output of test.py. Any hints would be much appreciated! Best regards, Jeroen |
From: Dale L. P. <haz...@gm...> - 2012-12-06 02:36:42
|
I have a time series of 32-bit unsigned integers in the form of a numpy array with dtype=numpy.uint32. The bits of each integer in array correspond to various boolean states collected during an experiment. I would like to make a plot this data in the following way: 1) time on the horizontal axis (I have a time array of the same length as my integer array) 2) bit position N on the vertical axis (0-1 corresponds to bit 0, 1-2 corresponds to bit 1, etc.) 3) a solid filled rectangle from (t1, N) to (t1+dt, N+1) whenever the bit is high. I been able to use the bitwise_and() and right_shift() on the data to get individual arrays which are populated with only 0's and1's. What I'm not clear on is now how to get the solid filled rectangle for areas where the bit is high and nothing when the bit is low. Is there already this functionality somewhere in matplotlib? I looked in the gallery and couldn't find anything quite like what I'm looking for, though I may have simply missed it. If there isn't, I'm sure there is a way to do it, does anybody have any recommendations as to the path of least resistance? Thanks, Luke -- “People call me a perfectionist, but I'm not. I'm a rightist. I do something until it's right, and then I move on to the next thing.” ― James Cameron |
From: Oliver K. <oli...@gm...> - 2012-12-05 23:33:01
|
> What is your matplotlib.__version__ ? I think that code only made it's > way into v1.2.0 (the latest stable), and was did not make it into > v1.1.1 (or anything before it) I'm running 1.1.0 - I'll upgrade it now. Thanks for the help! Oliver |
From: Paul I. <piv...@gm...> - 2012-12-05 23:29:27
|
On Wed, Dec 5, 2012 at 2:36 PM, Oliver King <oli...@gm...> wrote: > What appears to be happening is that the alpha values in the cmap I use when I create the ListedColormap object are being ignored by the add_collection function. I see that this bug (or something quite like it) was reported in late 2008: > http://matplotlib.1069221.n5.nabble.com/create-ListedColormap-with-different-alpha-values-tt18693.html#a18697 > > Did the patch from late 2008 not make it into the code, or has this bug resurfaced? Does anyone know of a workaround for this issue? It's all a blur now, but I don't think that patch made it in because colormaps were inherently RGB not RGBA. Something similar to that patch was merged in a year ago: https://github.com/matplotlib/matplotlib/pull/660 and attached is the result of running your code on my machine. What is your matplotlib.__version__ ? I think that code only made it's way into v1.2.0 (the latest stable), and was did not make it into v1.1.1 (or anything before it) -- Paul Ivanov 314 address only used for lists, off-list direct email at: http://pirsquared.org | GPG/PGP key id: 0x0F3E28F7 |
From: Oliver K. <oli...@gm...> - 2012-12-05 22:36:42
|
Hi, I've been trying to plot a line with varying alpha (but constant color). After much googling I have come up with the following code segment, which by all indications should work. It works when I vary an individual RGB element, but not when I vary alpha. ################################################# import numpy as np import matplotlib.pyplot as plt from matplotlib.collections import LineCollection from matplotlib.colors import ListedColormap, BoundaryNorm # the line to plot x = np.linspace(0,1,101) y = x*0.5-0.25 scaling = np.exp(-(x-0.5)**2/0.5**2) # scale the transparency of the line according to this # Create a colormap which has a constant color, but varies the transparency. N = 50 # this many different transparency levels alpha_boundaries = np.linspace(np.min(scaling),np.max(scaling),N+1) # The lowest values are transparent, the highest ones are opaque cmap = ListedColormap([(0.0,0.0,0.0,a) for a in np.linspace(0,1,N)]) norm = BoundaryNorm(alpha_boundaries, cmap.N) # Create a set of line segments so that we can color them individually # This creates the points as a N x 1 x 2 array so that we can stack points # together easily to get the segments. The segments array for line collection # needs to be numlines x points per line x 2 (x and y) points = np.array([x, y]).T.reshape(-1, 1, 2) segments = np.concatenate([points[:-1], points[1:]], axis=1) # Create the line collection object, setting the colormapping parameters. # Have to set the actual values used for colormapping separately. lc = LineCollection(segments, cmap=cmap, norm=norm) lc.set_array(scaling) ax = plt.subplot(111) ax.add_collection(lc) plt.xlim(x.min(), x.max()) plt.ylim(y.min(), y.max()) plt.show() ################################################# What appears to be happening is that the alpha values in the cmap I use when I create the ListedColormap object are being ignored by the add_collection function. I see that this bug (or something quite like it) was reported in late 2008: http://matplotlib.1069221.n5.nabble.com/create-ListedColormap-with-different-alpha-values-tt18693.html#a18697 Did the patch from late 2008 not make it into the code, or has this bug resurfaced? Does anyone know of a workaround for this issue? Cheers, Oliver |
From: Phil E. <pel...@gm...> - 2012-12-05 17:47:09
|
As of matplotlib v1.2.0 you can hatch a contour set directly. There is an example in the gallery: http://matplotlib.org/examples/pylab_examples/contourf_hatching.html Hope that helps, Phil On 5 December 2012 17:28, spencerahill <spe...@gm...> wrote: > Jae-Joon Lee wrote > > On Thu, Sep 15, 2011 at 10:33 PM, Jonathan Slavin > > < > > > jslavin@.harvard > > > > wrote: > >> I'm wondering if there is some way to do cross hatching as a way to fill > >> contours rather than colors (using contourf). The only references to > >> cross hatching I see in the documentation are for patches type objects. > >> As far as I can tell, contour and contourf return objects of their own > >> type (contour.QuadContourSet) that do not have hatch as an attribute. > >> > > > > Yes, it seems that hatching is only supported in patches. > > You may workaround this by converting contours to multiple patches. > > See the attachment. > > > > Matplotlib-users mailing list > > > Matplotlib-users@.sourceforge > > > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > > > > > contour_to_hatched_patches.py (1K) > > < > http://matplotlib.1069221.n5.nabble.com/attachment/23/0/contour_to_hatched_patches.py> > ; > > Hi Jae-Joon, > > Your contour_to_hatched_patches.py script works excellently. Is there a way > to suppress the contour lines and filling, leaving only stippling? I have > been experimenting with it but no luck. > > I have a contourf of a 2D variable and a separate 2D array indicating > regions of statistical significance (i.e. a mask, which equals 1 in cells > where the variable is significant and equals 0 else), and I want to put > black hatching over the contourf where it is significant. I can get this to > work, but still with a black contour line surrounding the hatched region. > I'd like to remove the line, leaving just the hatching. Thanks! > > Best, > Spencer > > > > > -- > View this message in context: > http://matplotlib.1069221.n5.nabble.com/cross-hatching-in-contours-tp22p39945.html > Sent from the matplotlib - users mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial > Remotely access PCs and mobile devices and provide instant support > Improve your efficiency, and focus on delivering more value-add services > Discover what IT Professionals Know. Rescue delivers > http://p.sf.net/sfu/logmein_12329d2d > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
From: spencerahill <spe...@gm...> - 2012-12-05 17:28:44
|
Jae-Joon Lee wrote > On Thu, Sep 15, 2011 at 10:33 PM, Jonathan Slavin > < > jslavin@.harvard > > wrote: >> I'm wondering if there is some way to do cross hatching as a way to fill >> contours rather than colors (using contourf). The only references to >> cross hatching I see in the documentation are for patches type objects. >> As far as I can tell, contour and contourf return objects of their own >> type (contour.QuadContourSet) that do not have hatch as an attribute. >> > > Yes, it seems that hatching is only supported in patches. > You may workaround this by converting contours to multiple patches. > See the attachment. > > Matplotlib-users mailing list > Matplotlib-users@.sourceforge > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > > contour_to_hatched_patches.py (1K) > <http://matplotlib.1069221.n5.nabble.com/attachment/23/0/contour_to_hatched_patches.py> Hi Jae-Joon, Your contour_to_hatched_patches.py script works excellently. Is there a way to suppress the contour lines and filling, leaving only stippling? I have been experimenting with it but no luck. I have a contourf of a 2D variable and a separate 2D array indicating regions of statistical significance (i.e. a mask, which equals 1 in cells where the variable is significant and equals 0 else), and I want to put black hatching over the contourf where it is significant. I can get this to work, but still with a black contour line surrounding the hatched region. I'd like to remove the line, leaving just the hatching. Thanks! Best, Spencer -- View this message in context: http://matplotlib.1069221.n5.nabble.com/cross-hatching-in-contours-tp22p39945.html Sent from the matplotlib - users mailing list archive at Nabble.com. |
From: ChaoYue <cha...@gm...> - 2012-12-04 21:21:05
|
Hi, rather than the previous manual definition of the text postioins, I find a more general/decent way: yloc=(cbar.values-cbar.boundaries[0])/(cbar.boundaries[-1]-cbar.boundaries[0]) for l,y in zip(cbar_label,yloc): cbar.ax.text(1,y,l,transform=cbar.ax.transAxes,ha='left',va='center') Chao -- View this message in context: http://matplotlib.1069221.n5.nabble.com/how-to-put-colorbar-label-beside-the-handle-tp39705p39941.html Sent from the matplotlib - users mailing list archive at Nabble.com. |