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
(12) |
4
(12) |
5
(22) |
6
(19) |
7
(9) |
8
|
|
9
|
10
(5) |
11
(1) |
12
(16) |
13
(8) |
14
(2) |
15
(1) |
|
16
(2) |
17
|
18
(10) |
19
(14) |
20
(9) |
21
(4) |
22
|
|
23
(2) |
24
(6) |
25
(2) |
26
(7) |
27
(7) |
28
|
29
|
|
30
|
|
|
|
|
|
|
|
From: Darren D. <dd...@co...> - 2006-04-26 20:39:55
|
Thank you Jared Wahlstrand and anyone else who has contributed to the svg backend. I'm making a poster with Inkscape, and had trouble importing some eps graphics, when I remembered that we have svg support. MPL kicks ass. |
|
From: John H. <jdh...@ac...> - 2006-04-26 20:22:13
|
>>>>> "Tom" == Tom Denniston <tom...@al...> writes:
Tom> I was able to work around the error simply by doing the
Tom> obvious, making var = 0 if max(abs(vmin), abs(vmax)). I
Tom> think someone who understood the code better could probably
Tom> come up with a better solution.
Hey Tom, this bug is already fixed in matplotlib svn. Thanks for the
report.
JDH
|
|
From: Tom D. <tom...@al...> - 2006-04-26 20:17:53
|
The following code in matplotlib.ticker has a bug: 730 def scale_range(vmin, vmax, n =3D 1, threshold=3D100): 731 dv =3D abs(vmax - vmin) 732 meanv =3D 0.5*(vmax+vmin) 733 B-> var =3D dv/max(abs(vmin), abs(vmax)) 734 if var < 1e-12: 735 return 1.0, 0.0 736 if abs(meanv)/dv < threshold: 737 offset =3D 0 738 elif meanv > 0: When both dmin and dmax are 0 it results in 0 division. I have been unable to write a snippet of code to reproduce the problem unfortunately. I was able to work around the error simply by doing the obvious, making var =3D 0 if max(abs(vmin), abs(vmax)). I think someone who understood the code better could probably come up with a better solution. --Tom |
|
From: Pepe SM <kom...@ya...> - 2006-04-26 19:24:17
|
Hello,
This is my first message to the mailing list. I send a
patch to plot arrows as markers. I hope someone find
it usefull.
I needed to plot arrows as markers and I did not find
how to do it easily. Finally I changed some of the
source code (axes.py and lines.py) to do this.
To plot an arrow you have to write an 'a' plus a
number which defines the direction of the arrow. The
directions are the same that the ones in the numerical
keyboard, i.e., if you want to plot a green arrow
pointing to the left-bottom you will have to write the
string 'ga1' or 'a1g'.
I send the files for the version 0.82 of matplotlib (I
can not run properly the version 0.87 by now because I
have problems with colours and the axes(??!)). Here
are the diff outputs for the two files:
--- axes.py 2005-08-04 20:19:57.000000000 +0200
+++ axes_original.py 2005-06-15 20:50:44.000000000
+0200
@@ -89,30 +89,6 @@
if fmt.find('-.')>=0:
linestyle = '-.'
fmt = fmt.replace('-.', '')
- if fmt.find('a1')>=0:
- marker = 'a1'
- fmt = fmt.replace('a1', '')
- if fmt.find('a2')>=0:
- marker = 'a2'
- fmt = fmt.replace('a2', '')
- if fmt.find('a3')>=0:
- marker = 'a3'
- fmt = fmt.replace('a3', '')
- if fmt.find('a4')>=0:
- marker = 'a4'
- fmt = fmt.replace('a4', '')
- if fmt.find('a6')>=0:
- marker = 'a6'
- fmt = fmt.replace('a6', '')
- if fmt.find('a7')>=0:
- marker = 'a7'
- fmt = fmt.replace('a7', '')
- if fmt.find('a8')>=0:
- marker = 'a8'
- fmt = fmt.replace('a8', '')
- if fmt.find('a9')>=0:
- marker = 'a9'
- fmt = fmt.replace('a9', '')
chars = [c for c in fmt]
--- lines.py 2005-08-04 20:19:57.000000000
+0200
+++ lines_original.py 2005-06-15 00:21:21.000000000
+0200
@@ -27,8 +27,7 @@
lineStyles = {'-':1, '--':1, '-.':1, ':':1,
'steps':1, 'None':1}
lineMarkers = {'.':1, ',':1, 'o':1, '^':1, 'v':1,
'<':1, '>':1, 's':1,
'+':1, 'x':1, 'd':1, 'D':1, '|':1,
'_':1, 'h':1, 'H':1,
- 'p':1, '1':1, '2':1, '3':1, '4':1,
'a1':1, 'a2':1,
- 'a3':1, 'a4':1, 'a6':1, 'a7':1,
'a8':1, 'a9':1,
+ 'p':1, '1':1, '2':1, '3':1, '4':1,
TICKLEFT:1,
TICKRIGHT:1,
TICKUP:1,
@@ -109,14 +108,6 @@
'2' : '_draw_tri_up',
'3' : '_draw_tri_left',
'4' : '_draw_tri_right',
- 'a1' : '_draw_arrow_left_down',
- 'a2' : '_draw_arrow_down',
- 'a3' : '_draw_arrow_right_down',
- 'a4' : '_draw_arrow_left',
- 'a6' : '_draw_arrow_right',
- 'a7' : '_draw_arrow_left_up',
- 'a8' : '_draw_arrow_up',
- 'a9' : '_draw_arrow_right_up',
's' : '_draw_square',
'p' : '_draw_pentagon',
'h' : '_draw_hexagon1',
@@ -1136,139 +1127,6 @@
renderer.draw_line(gc, x-offset,
y-offset, x+offset, y+offset)
renderer.draw_line(gc, x-offset,
y+offset, x+offset, y-offset)
-#Empiezan mis 8 flechas
-
- def _draw_arrow_down(self, renderer, gc, xt, yt):
- offset =
0.5*renderer.points_to_pixels(self._markersize)
- if self._newstyle:
- path = agg.path_storage()
- path.move_to(0, +offset)
- path.line_to(0, -offset)
- path.line_to(-offset, 0)
- path.move_to(+offset, 0)
- path.line_to(0, -offset)
- renderer.draw_markers(gc, path, None, xt,
yt, self._transform)
- else:
- for (x,y) in zip(xt, yt):
- renderer.draw_line(gc, x, y+offset,
x, y-offset)
- renderer.draw_line(gc, x, y-offset,
x+offset, y)
- renderer.draw_line(gc, x, y-offset,
x-offset, y)
-
- def _draw_arrow_left_down(self, renderer, gc, xt,
yt):
- offset =
0.5*renderer.points_to_pixels(self._markersize)
- if self._newstyle:
- path = agg.path_storage()
- path.move_to(+offset, +offset)
- path.line_to(-offset, -offset)
- path.line_to(-offset, 0)
- path.move_to(0, -offset)
- path.line_to(-offset, -offset)
- renderer.draw_markers(gc, path, None, xt,
yt, self._transform)
- else:
- for (x,y) in zip(xt, yt):
- renderer.draw_line(gc, x+offset,
y+offset, x-offset, y-offset)
- renderer.draw_line(gc, x-offset,
y-offset, x-offset, y)
- renderer.draw_line(gc, x-offset,
y-offset, x, y-offset)
-
- def _draw_arrow_right_down(self, renderer, gc,
xt, yt):
- offset =
0.5*renderer.points_to_pixels(self._markersize)
- if self._newstyle:
- path = agg.path_storage()
- path.move_to(-offset, +offset)
- path.line_to(+offset, -offset)
- path.line_to(+offset, 0)
- path.move_to(0, -offset)
- path.line_to(+offset, -offset)
- renderer.draw_markers(gc, path, None, xt,
yt, self._transform)
- else:
- for (x,y) in zip(xt, yt):
- renderer.draw_line(gc, x-offset,
y+offset, x+offset, y-offset)
- renderer.draw_line(gc, x+offset,
y-offset, x+offset, y)
- renderer.draw_line(gc, x+offset,
y-offset, x, y-offset)
-
- def _draw_arrow_left(self, renderer, gc, xt, yt):
- offset =
0.5*renderer.points_to_pixels(self._markersize)
- if self._newstyle:
- path = agg.path_storage()
- path.move_to(+offset,0)
- path.line_to(-offset,0)
- path.line_to(0,+offset)
- path.move_to(-offset, 0)
- path.line_to(0, -offset)
- renderer.draw_markers(gc, path, None, xt,
yt, self._transform)
- else:
- for (x,y) in zip(xt, yt):
- renderer.draw_line(gc, x+offset, y,
x-offset, y)
- renderer.draw_line(gc, x-offset, y,
x, y+offset)
- renderer.draw_line(gc, x-offset, y,
x, y-offset)
-
- def _draw_arrow_right(self, renderer, gc, xt,
yt):
- offset =
0.5*renderer.points_to_pixels(self._markersize)
- if self._newstyle:
- path = agg.path_storage()
- path.move_to(-offset,0)
- path.line_to(+offset,0)
- path.line_to(0,+offset)
- path.move_to(+offset, 0)
- path.line_to(0, -offset)
- renderer.draw_markers(gc, path, None, xt,
yt, self._transform)
- else:
- for (x,y) in zip(xt, yt):
- renderer.draw_line(gc, x+offset, y,
x-offset, y)
- renderer.draw_line(gc, x+offset, y,
x, y+offset)
- renderer.draw_line(gc, x+offset, y,
x, y-offset)
-
- def _draw_arrow_left_up(self, renderer, gc, xt,
yt):
- offset =
0.5*renderer.points_to_pixels(self._markersize)
- if self._newstyle:
- path = agg.path_storage()
- path.move_to(+offset, -offset)
- path.line_to(-offset, +offset)
- path.line_to(-offset, 0)
- path.move_to(0, +offset)
- path.line_to(-offset, +offset)
- renderer.draw_markers(gc, path, None, xt,
yt, self._transform)
- else:
- for (x,y) in zip(xt, yt):
- renderer.draw_line(gc, x-offset,
y+offset, x+offset, y-offset)
- renderer.draw_line(gc, x-offset,
y+offset, x, y+offset)
- renderer.draw_line(gc, x-offset,
y+offset, x-offset, y)
-
- def _draw_arrow_up(self, renderer, gc, xt, yt):
- offset =
0.5*renderer.points_to_pixels(self._markersize)
- if self._newstyle:
- path = agg.path_storage()
- path.move_to(0, -offset)
- path.line_to(0, +offset)
- path.line_to(-offset, 0)
- path.move_to(+offset, 0)
- path.line_to(0, +offset)
- renderer.draw_markers(gc, path, None, xt,
yt, self._transform)
- else:
- for (x,y) in zip(xt, yt):
- renderer.draw_line(gc, x, y+offset,
x, y-offset)
- renderer.draw_line(gc, x, y+offset,
x+offset, y)
- renderer.draw_line(gc, x, y+offset,
x-offset, y)
-
- def _draw_arrow_right_up(self, renderer, gc, xt,
yt):
- offset =
0.5*renderer.points_to_pixels(self._markersize)
- if self._newstyle:
- path = agg.path_storage()
- path.move_to(-offset, -offset)
- path.line_to(+offset, +offset)
- path.line_to(+offset, 0)
- path.move_to(0, +offset)
- path.line_to(+offset, +offset)
- renderer.draw_markers(gc, path, None, xt,
yt, self._transform)
- else:
- for (x,y) in zip(xt, yt):
- renderer.draw_line(gc, x+offset,
y+offset, x-offset, y-offset)
- renderer.draw_line(gc, x+offset,
y+offset, x+offset, y)
- renderer.draw_line(gc, x+offset,
y+offset, x, y+offset)
-
-#Terminan mis 8 flechas
-
-
def update_from(self, other):
'copy properties from other to self'
Artist.update_from(self, other)
-------------------------------------
I think it would not be difficult to do something
similar for the last version. The shape of the arrows
can be improved to look better. This patch is only an
idea, the problem is to add new non-standard marker
names, if anyone knows a smart way of doing this it
would be apreciated. That's all.
Thank you for your fabulous module.
Pepe.
______________________________________________
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
|
|
From: Jouni K S. <jk...@ik...> - 2006-04-26 15:03:44
|
Jouni K Seppanen <jk...@ik...> writes: > It apparently has to be font.load_char(ch, LOAD_NO_SCALE), or at least > that produces width values that look similar to those in files saved > by Preview.app. But acroread still complains... It seems that I can stop the complaining by forcing the /LastChar entry in the Font dictionary to be 255 instead of 258. The characters (in at least Bitstream Vera Sans) mysteriously seem to be numbered from 3 to 258, so I guess this must be some sort of an encoding issue. Does this ring a bell to anyone? -- Jouni |
|
From: John H. <jdh...@ac...> - 2006-04-26 13:40:05
|
>>>>> "Jouni" == Jouni K Seppanen <jk...@ik...> writes:
Jouni> John Hunter <jdh...@ac...> writes:
>> You shouldn't need to with the ft2font extension code, because
>> it uses pycxx which has support for kwarg handling. Eg in the
>> _image.cpp src
>>
>> Py::Object resize(const Py::Tuple& args, const Py::Dict&
>> kwargs);
Jouni> [...]
>> args.verify_length(2);
>>
>> int norm = 1; if ( kwargs.hasKey("norm") ) norm = Py::Int(
>> kwargs["norm"] );
Jouni> This seems to mean that the function cannot be called using
Jouni> the normal Python convention:
>>>> img.resize(10,10,1)
Jouni> Traceback (most recent call last): File "<stdin>", line
Jouni> 1, in ? IndexError: Unexpected SeqBase<T> length.
The reason it raises is because I told it too :-)
args.verify_length(2);
if you want normal python symantics, you could to something something
like (untested, freestyle code)
int norm(0);
if (args.length()==3)
norm = Py::Int( args[2] );
elif ( kwargs.hasKey("norm") )
norm = Py::Int( kwargs["norm"] );
Jouni> Instead you have to do img.resize(10,10,norm=1). This is
Jouni> handled transparently by PyArg_ParseTupleAndKeywords: if
Jouni> you set the format string to "ii|ii" and list the names of
Jouni> all parameters as keywords, you automatically get the
Jouni> normal Python convention where the last two args are
Jouni> optional and all args are specifiable with their names.
Jouni> But I guess this is not so important in extension code that
Jouni> only gets called by matplotlib internals and not end users,
Jouni> so I changed load_char to use the pycxx convention.
I do think it is useful in the pycxx extension code to stick where
possible to the cxx idioms -- for the most part the code is cleaner to
reads and helps with reference counting, etc.... You can check the
docs at
http://cxx.sourceforge.net/PyCXX.html
there may be a cleaner way to handle kwargs than what I suggested.
JDH
|
|
From: Jouni K S. <jk...@ik...> - 2006-04-26 10:06:12
|
John Hunter <jdh...@ac...> writes:
> You shouldn't need to with the ft2font extension code, because it uses
> pycxx which has support for kwarg handling. Eg in the _image.cpp src
>
> Py::Object resize(const Py::Tuple& args, const Py::Dict& kwargs);
[...]
> args.verify_length(2);
>
> int norm = 1;
> if ( kwargs.hasKey("norm") ) norm = Py::Int( kwargs["norm"] );
This seems to mean that the function cannot be called using the normal
Python convention:
>>> img.resize(10,10,1)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
IndexError: Unexpected SeqBase<T> length.
Instead you have to do img.resize(10,10,norm=1). This is handled
transparently by PyArg_ParseTupleAndKeywords: if you set the format
string to "ii|ii" and list the names of all parameters as keywords,
you automatically get the normal Python convention where the last two
args are optional and all args are specifiable with their names.
But I guess this is not so important in extension code that only gets
called by matplotlib internals and not end users, so I changed
load_char to use the pycxx convention.
--
Jouni
|