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
(1) |
2
|
3
|
4
|
5
|
6
(3) |
7
(3) |
8
(3) |
9
(4) |
10
(1) |
11
(5) |
12
(2) |
13
|
14
(2) |
15
(1) |
16
(6) |
17
(7) |
18
(3) |
19
|
20
|
21
|
22
(1) |
23
|
24
|
25
|
26
|
27
(1) |
28
(1) |
29
|
30
|
31
|
Sorry for the multiple mailings. in makers.py I request to change def _set_custom_marker(self, path): verts = path.vertices rescale = max(np.max(np.abs(verts[:,0])), np.max(np.abs(verts[:,1]))) self._transform = Affine2D().scale(1.0 / rescale) self._path = path to def _set_custom_marker(self, path): verts = path.vertices rescale = np.max(np.sqrt(np.square(verts[:,0]) + np.square(verts[:,1]))) self._transform = Affine2D().scale(1.0 / rescale) self._path = path such that the symbol *radius* is normalized to 1.0 This way my previous example give better results if the symbol is rotated: import matplotlib.path as path from matplotlib.transforms import Affine2D # define codes P = path.Path Pm = P.MOVETO Pl = P.LINETO Pc = P.CLOSEPOLY c = [Pm] + [Pl]*3 + [Pc] cx=c*2 # define basic path r=np.array(((-1.,-1),(1.,-1),(1.,1.),(-1,1.),(-1,-1))) # we add second closed path of half size but reverse parity rh=0.5*r[::-1] rx = np.vstack((r,rh)) p = path.Path(rx,codes=cx) x = np.linspace(0,1,10)**2 plot(x,c='r',marker=p,ms=10) pr = p.transformed(Affine2D().rotate_deg(45.)) plot(x,c='r',marker=pr,ms=10) show() I think this is how it is "meant" to be, but maybe you have to add a parameter to allow people recover the current behavior in that case. -Alexander ==== I just like round cows better than square cows.
in makers.py I request to change def _set_custom_marker(self, path): verts = path.vertices rescale = max(np.max(np.abs(verts[:,0])), np.max(np.abs(verts[:,1]))) self._transform = Affine2D().scale(1.0 / rescale) self._path = path to def _set_custom_marker(self, path): verts = path.vertices rescale = np.max(np.sqrt(np.square(verts[:,0]) + np.square(verts[:,1]))) self._transform = Affine2D().scale(1.0 / rescale) self._path = path such that the symbol *radius* is normalized to 1.0 This way my previous example give better results if the symbol is rotated: import matplotlib.path as path from matplotlib.transforms import Affine2D # define codes P = path.Path Pm = P.MOVETO Pl = P.LINETO Pc = P.CLOSEPOLY c = [Pm] + [Pl]*3 + [Pc] cx=c*2 # define basic path r=np.array(((-1.,-1),(1.,-1),(1.,1.),(-1,1.),(-1,-1))) # we add second closed path of half size but reverse parity rh=0.5*r[::-1] rx = np.vstack((r,rh)) p = path.Path(rx,codes=cx) x = np.linspace(0,1,10)**2 plot(x,c='r',marker=p,ms=10) pr = p.transformed(Affine2D().rotate_deg(45.)) plot(x,c='r',marker=pr,ms=10) show() I think this is how it is "meant" to be, but maybe you have to add a parameter to allow people recover the current behavior in that case. -Alexander ==== I just like round cows better than square cows.
In [1]: matplotlib.__version__ Out[1]: '1.2.x' ~/matplotlib/lib/matplotlib>diff markers.py_broken markers.py 190c190 < path = Path(verts) --- > path = Path(self._marker) PS - I tried to log into https://github.com/matplotlib/matplotlib/issues using my mailing list password to create a bug report, but it would not accept it, so you get it this way. DOCUMENTATION NOTES 1) in the table for marker vertices it states http://matplotlib.sourceforge.net/api/artist_api.html#matplotlib.lines.Line2D.set_marker verts a list of (x, y) pairs in range (0, 1) it really should be just normalized or abs(1), (0,0) being center, and hence the (x,y) values should be in the range (-1,+1). Would be good to add an example x=np.linspace(0,1,10)**2 plot(x,c='r',marker=((-1.,-1),(1.,-1),(1.,1.),(-1,1.),(-1,-1)),ms=10) 2) the source also support to just provide a path as a marker, which (a) is cool, and (b) seemed natural as internal many things are done a paths, and even complies paths are generated from the $...$ syntax math. In any case, this should be added to the documentation for allowed markers path a matplotlib.path.Path object import matplotlib.path as path x = np.linspace(0,1,10)**2 p = path.Path(((-1.,-1),(1.,-1),(1.,1.),(-1,1.),(-1,-1))) plot(x,c='r',marker=p,ms=10) or a cool example that you may want tot add to the library... import matplotlib.path as path # define codes P = path.Path Pm = P.MOVETO Pl = P.LINETO Pc = P.CLOSEPOLY c = [Pm] + [Pl]*3 + [Pc] cx=c*2 # define basic path r=np.array(((-1.,-1),(1.,-1),(1.,1.),(-1,1.),(-1,-1))) # we add second closed path of half size but reverse parity rh=0.5*r[::-1] rx = np.vstack((r,rh)) p = path.Path(rx,codes=cx) x = np.linspace(0,1,10)**2 plot(x,c='r',marker=p,ms=10) PS - I guess I need to figure out how to do such updates w/o requesting action from the lest eventually. Just to emphasize (2a): COOL!!! Wishlist: Can we add a "transform" parameter to overwrite self._transform? I suppose this would have to go many places. "set_marker_transform" Maybe add to MarkerStyle from transforms import Transform def self.set_transform(self, transform = IdentityTransform()): assert isinstance(x, Transform) self._transfrom = transfrom() Maybe less fancy, and better for starters, to add an angle "set_marker_rotation(angle)" using Affine2D().rotate_deg(angle) -Alexander