You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(115) |
Aug
(120) |
Sep
(137) |
Oct
(170) |
Nov
(461) |
Dec
(263) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(120) |
Feb
(74) |
Mar
(35) |
Apr
(74) |
May
(245) |
Jun
(356) |
Jul
(240) |
Aug
(115) |
Sep
(78) |
Oct
(225) |
Nov
(98) |
Dec
(271) |
2009 |
Jan
(132) |
Feb
(84) |
Mar
(74) |
Apr
(56) |
May
(90) |
Jun
(79) |
Jul
(83) |
Aug
(296) |
Sep
(214) |
Oct
(76) |
Nov
(82) |
Dec
(66) |
2010 |
Jan
(46) |
Feb
(58) |
Mar
(51) |
Apr
(77) |
May
(58) |
Jun
(126) |
Jul
(128) |
Aug
(64) |
Sep
(50) |
Oct
(44) |
Nov
(48) |
Dec
(54) |
2011 |
Jan
(68) |
Feb
(52) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
1
|
2
|
3
|
4
|
5
(2) |
6
(2) |
7
|
8
|
9
(3) |
10
(6) |
11
|
12
|
13
(9) |
14
(5) |
15
|
16
|
17
(2) |
18
|
19
|
20
|
21
(2) |
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
(18) |
30
(5) |
31
|
|
Revision: 8868 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8868&view=rev Author: jswhit Date: 2010年12月30日 16:14:19 +0000 (2010年12月30日) Log Message: ----------- detect projection out of range, set error flag. Modified Paths: -------------- trunk/toolkits/basemap/src/PJ_hammer.c Modified: trunk/toolkits/basemap/src/PJ_hammer.c =================================================================== --- trunk/toolkits/basemap/src/PJ_hammer.c 2010年12月30日 13:09:06 UTC (rev 8867) +++ trunk/toolkits/basemap/src/PJ_hammer.c 2010年12月30日 16:14:19 UTC (rev 8868) @@ -2,6 +2,7 @@ double w; \ double m, rm; #define PJ_LIB__ +# define EPS 1.0e-10 # include <projects.h> PROJ_HEAD(hammer, "Hammer & Eckert-Greifendorff") "\n\tMisc Sph, \n\tW= M="; @@ -15,9 +16,15 @@ } INVERSE(s_inverse); /* spheroid */ double z; - z = sqrt(1. - (0.5 * P->w * xy.x) * (0.5 * P->w * xy.x) - (0.5 * xy.y) * (0.5 * xy.y)); - lp.lam = aatan2(P->w * xy.x * z,2. * z * z - 1)/P->w; - lp.phi = aasin(z * xy.y); + z = sqrt(1. - 0.25*P->w*P->w*xy.x*xy.x - 0.25*xy.y*xy.y); + if (fabs(2.*z*z-1.) < EPS) { + lp.lam = HUGE_VAL; + lp.phi = HUGE_VAL; + pj_errno = -14; + } else { + lp.lam = aatan2(P->w * xy.x * z,2. * z * z - 1)/P->w; + lp.phi = aasin(z * xy.y); + } return (lp); } FREEUP; if (P) pj_dalloc(P); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8867 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8867&view=rev Author: jswhit Date: 2010年12月30日 13:09:06 +0000 (2010年12月30日) Log Message: ----------- add more checks for undefined projection values. Modified Paths: -------------- trunk/toolkits/basemap/src/_proj.c trunk/toolkits/basemap/src/_proj.pyx Modified: trunk/toolkits/basemap/src/_proj.c =================================================================== --- trunk/toolkits/basemap/src/_proj.c 2010年12月30日 12:57:05 UTC (rev 8866) +++ trunk/toolkits/basemap/src/_proj.c 2010年12月30日 13:09:06 UTC (rev 8867) @@ -1,4 +1,4 @@ -/* Generated by Cython 0.13 on Tue Nov 30 10:44:02 2010 */ +/* Generated by Cython 0.13 on Thu Dec 30 06:06:48 2010 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -279,7 +279,7 @@ /* Type declarations */ -/* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":12 +/* "/Users/jsw/python/basemap/src/_proj.pyx":12 * pj_set_searchpath(1, &searchpath) * * cdef class Proj: # <<<<<<<<<<<<<< @@ -407,11 +407,12 @@ /* Implementation of _proj */ static PyObject *__pyx_builtin_RuntimeError; static char __pyx_k_3[] = "Buffer lengths not the same"; -static char __pyx_k_6[] = "x,y and z must be same size"; -static char __pyx_k_7[] = "1.8.8"; -static char __pyx_k_8[] = "Proj.__reduce__ (line 32)"; -static char __pyx_k_9[] = "Proj._fwd (line 36)"; -static char __pyx_k_10[] = "Proj._inv (line 85)"; +static char __pyx_k_4[] = "projection undefined"; +static char __pyx_k_7[] = "x,y and z must be same size"; +static char __pyx_k_8[] = "1.8.7"; +static char __pyx_k_9[] = "Proj.__reduce__ (line 32)"; +static char __pyx_k_10[] = "Proj._fwd (line 36)"; +static char __pyx_k_11[] = "Proj._inv (line 94)"; static char __pyx_k__u[] = "u"; static char __pyx_k__v[] = "v"; static char __pyx_k__x[] = "x"; @@ -446,10 +447,11 @@ static char __pyx_k__pjinitstring[] = "pjinitstring"; static char __pyx_k__proj_version[] = "proj_version"; static PyObject *__pyx_kp_u_10; +static PyObject *__pyx_kp_u_11; static PyObject *__pyx_kp_s_3; -static PyObject *__pyx_kp_s_6; +static PyObject *__pyx_kp_s_4; static PyObject *__pyx_kp_s_7; -static PyObject *__pyx_kp_u_8; +static PyObject *__pyx_kp_s_8; static PyObject *__pyx_kp_u_9; static PyObject *__pyx_n_s__Proj; static PyObject *__pyx_n_s__RuntimeError; @@ -486,10 +488,10 @@ static PyObject *__pyx_n_s__y; static PyObject *__pyx_k_1; static PyObject *__pyx_k_2; -static PyObject *__pyx_k_4; static PyObject *__pyx_k_5; +static PyObject *__pyx_k_6; -/* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":7 +/* "/Users/jsw/python/basemap/src/_proj.pyx":7 * #c_numpy.import_array() * * def set_datapath(datapath): # <<<<<<<<<<<<<< @@ -504,7 +506,7 @@ __Pyx_RefNannySetupContext("set_datapath"); __pyx_self = __pyx_self; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":9 + /* "/Users/jsw/python/basemap/src/_proj.pyx":9 * def set_datapath(datapath): * cdef char *searchpath * searchpath = PyString_AsString(datapath) # <<<<<<<<<<<<<< @@ -513,7 +515,7 @@ */ __pyx_v_searchpath = PyString_AsString(__pyx_v_datapath); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":10 + /* "/Users/jsw/python/basemap/src/_proj.pyx":10 * cdef char *searchpath * searchpath = PyString_AsString(datapath) * pj_set_searchpath(1, &searchpath) # <<<<<<<<<<<<<< @@ -528,7 +530,7 @@ return __pyx_r; } -/* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":14 +/* "/Users/jsw/python/basemap/src/_proj.pyx":14 * cdef class Proj: * cdef projPJ projpj * cdef public object proj_version # <<<<<<<<<<<<<< @@ -582,7 +584,7 @@ return __pyx_r; } -/* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":16 +/* "/Users/jsw/python/basemap/src/_proj.pyx":16 * cdef public object proj_version * cdef char *pjinitstring * cdef public object srs # <<<<<<<<<<<<<< @@ -636,7 +638,7 @@ return __pyx_r; } -/* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":18 +/* "/Users/jsw/python/basemap/src/_proj.pyx":18 * cdef public object srs * * def __new__(self, projstring): # <<<<<<<<<<<<<< @@ -685,7 +687,7 @@ return -1; __pyx_L4_argument_unpacking_done:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":20 + /* "/Users/jsw/python/basemap/src/_proj.pyx":20 * def __new__(self, projstring): * # setup proj initialization string. * self.srs = projstring # <<<<<<<<<<<<<< @@ -698,7 +700,7 @@ __Pyx_DECREF(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->srs); ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->srs = __pyx_v_projstring; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":21 + /* "/Users/jsw/python/basemap/src/_proj.pyx":21 * # setup proj initialization string. * self.srs = projstring * self.pjinitstring = PyString_AsString(self.srs) # <<<<<<<<<<<<<< @@ -707,7 +709,7 @@ */ ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->pjinitstring = PyString_AsString(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->srs); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":23 + /* "/Users/jsw/python/basemap/src/_proj.pyx":23 * self.pjinitstring = PyString_AsString(self.srs) * # initialize projection * self.projpj = pj_init_plus(self.pjinitstring) # <<<<<<<<<<<<<< @@ -716,7 +718,7 @@ */ ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj = pj_init_plus(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->pjinitstring); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":24 + /* "/Users/jsw/python/basemap/src/_proj.pyx":24 * # initialize projection * self.projpj = pj_init_plus(self.pjinitstring) * if pj_errno != 0: # <<<<<<<<<<<<<< @@ -726,7 +728,7 @@ __pyx_t_1 = (pj_errno != 0); if (__pyx_t_1) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":25 + /* "/Users/jsw/python/basemap/src/_proj.pyx":25 * self.projpj = pj_init_plus(self.pjinitstring) * if pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< @@ -750,7 +752,7 @@ } __pyx_L6:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":26 + /* "/Users/jsw/python/basemap/src/_proj.pyx":26 * if pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) * self.proj_version = PJ_VERSION/100. # <<<<<<<<<<<<<< @@ -777,7 +779,7 @@ return __pyx_r; } -/* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":28 +/* "/Users/jsw/python/basemap/src/_proj.pyx":28 * self.proj_version = PJ_VERSION/100. * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -789,7 +791,7 @@ static void __pyx_pf_5_proj_4Proj___dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannySetupContext("__dealloc__"); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":30 + /* "/Users/jsw/python/basemap/src/_proj.pyx":30 * def __dealloc__(self): * """destroy projection definition""" * pj_free(self.projpj) # <<<<<<<<<<<<<< @@ -801,7 +803,7 @@ __Pyx_RefNannyFinishContext(); } -/* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":32 +/* "/Users/jsw/python/basemap/src/_proj.pyx":32 * pj_free(self.projpj) * * def __reduce__(self): # <<<<<<<<<<<<<< @@ -818,7 +820,7 @@ PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("__reduce__"); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":34 + /* "/Users/jsw/python/basemap/src/_proj.pyx":34 * def __reduce__(self): * """special method that allows pyproj.Proj instance to be pickled""" * return (self.__class__,(self.srs,)) # <<<<<<<<<<<<<< @@ -859,7 +861,7 @@ return __pyx_r; } -/* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":36 +/* "/Users/jsw/python/basemap/src/_proj.pyx":36 * return (self.__class__,(self.srs,)) * * def _fwd(self, object lons, object lats, radians=False, errcheck=False): # <<<<<<<<<<<<<< @@ -961,7 +963,7 @@ return NULL; __pyx_L4_argument_unpacking_done:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":50 + /* "/Users/jsw/python/basemap/src/_proj.pyx":50 * cdef void *londata, *latdata * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons, &londata, &buflenx) <> 0: # <<<<<<<<<<<<<< @@ -971,7 +973,7 @@ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_lons, (&__pyx_v_londata), (&__pyx_v_buflenx)) != 0); if (__pyx_t_1) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":51 + /* "/Users/jsw/python/basemap/src/_proj.pyx":51 * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons, &londata, &buflenx) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -984,7 +986,7 @@ } __pyx_L6:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":52 + /* "/Users/jsw/python/basemap/src/_proj.pyx":52 * if PyObject_AsWriteBuffer(lons, &londata, &buflenx) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(lats, &latdata, &bufleny) <> 0: # <<<<<<<<<<<<<< @@ -994,7 +996,7 @@ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_lats, (&__pyx_v_latdata), (&__pyx_v_bufleny)) != 0); if (__pyx_t_1) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":53 + /* "/Users/jsw/python/basemap/src/_proj.pyx":53 * raise RuntimeError * if PyObject_AsWriteBuffer(lats, &latdata, &bufleny) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1007,7 +1009,7 @@ } __pyx_L7:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":55 + /* "/Users/jsw/python/basemap/src/_proj.pyx":55 * raise RuntimeError * # process data in buffer * if buflenx != bufleny: # <<<<<<<<<<<<<< @@ -1017,7 +1019,7 @@ __pyx_t_1 = (__pyx_v_buflenx != __pyx_v_bufleny); if (__pyx_t_1) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":56 + /* "/Users/jsw/python/basemap/src/_proj.pyx":56 * # process data in buffer * if buflenx != bufleny: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< @@ -1039,7 +1041,7 @@ } __pyx_L8:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":57 + /* "/Users/jsw/python/basemap/src/_proj.pyx":57 * if buflenx != bufleny: * raise RuntimeError("Buffer lengths not the same") * ndim = buflenx/_doublesize # <<<<<<<<<<<<<< @@ -1058,7 +1060,7 @@ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_ndim = __pyx_t_5; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":58 + /* "/Users/jsw/python/basemap/src/_proj.pyx":58 * raise RuntimeError("Buffer lengths not the same") * ndim = buflenx/_doublesize * lonsdata = <double *>londata # <<<<<<<<<<<<<< @@ -1067,7 +1069,7 @@ */ __pyx_v_lonsdata = ((double *)__pyx_v_londata); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":59 + /* "/Users/jsw/python/basemap/src/_proj.pyx":59 * ndim = buflenx/_doublesize * lonsdata = <double *>londata * latsdata = <double *>latdata # <<<<<<<<<<<<<< @@ -1076,7 +1078,7 @@ */ __pyx_v_latsdata = ((double *)__pyx_v_latdata); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":60 + /* "/Users/jsw/python/basemap/src/_proj.pyx":60 * lonsdata = <double *>londata * latsdata = <double *>latdata * for i from 0 <= i < ndim: # <<<<<<<<<<<<<< @@ -1086,12 +1088,12 @@ __pyx_t_5 = __pyx_v_ndim; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":62 + /* "/Users/jsw/python/basemap/src/_proj.pyx":62 * for i from 0 <= i < ndim: * # if inputs are nan's, return big number. * if lonsdata[i] != lonsdata[i] or latsdata[i] != latsdata[i]: # <<<<<<<<<<<<<< * lonsdata[i]=1.e30; latsdata[i]=1.e30 - * continue + * if errcheck: */ __pyx_t_1 = ((__pyx_v_lonsdata[__pyx_v_i]) != (__pyx_v_lonsdata[__pyx_v_i])); if (!__pyx_t_1) { @@ -1102,19 +1104,51 @@ } if (__pyx_t_7) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":63 + /* "/Users/jsw/python/basemap/src/_proj.pyx":63 * # if inputs are nan's, return big number. * if lonsdata[i] != lonsdata[i] or latsdata[i] != latsdata[i]: * lonsdata[i]=1.e30; latsdata[i]=1.e30 # <<<<<<<<<<<<<< - * continue - * if radians: + * if errcheck: + * raise RuntimeError('projection undefined') */ (__pyx_v_lonsdata[__pyx_v_i]) = 1.e30; (__pyx_v_latsdata[__pyx_v_i]) = 1.e30; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":64 + /* "/Users/jsw/python/basemap/src/_proj.pyx":64 * if lonsdata[i] != lonsdata[i] or latsdata[i] != latsdata[i]: * lonsdata[i]=1.e30; latsdata[i]=1.e30 + * if errcheck: # <<<<<<<<<<<<<< + * raise RuntimeError('projection undefined') + * continue + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_7) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":65 + * lonsdata[i]=1.e30; latsdata[i]=1.e30 + * if errcheck: + * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< + * continue + * if radians: + */ + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_4)); + PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_4)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_4)); + __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_2, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L12; + } + __pyx_L12:; + + /* "/Users/jsw/python/basemap/src/_proj.pyx":66 + * if errcheck: + * raise RuntimeError('projection undefined') * continue # <<<<<<<<<<<<<< * if radians: * projlonlatin.u = lonsdata[i] @@ -1124,17 +1158,17 @@ } __pyx_L11:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":65 - * lonsdata[i]=1.e30; latsdata[i]=1.e30 + /* "/Users/jsw/python/basemap/src/_proj.pyx":67 + * raise RuntimeError('projection undefined') * continue * if radians: # <<<<<<<<<<<<<< * projlonlatin.u = lonsdata[i] * projlonlatin.v = latsdata[i] */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_7) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":66 + /* "/Users/jsw/python/basemap/src/_proj.pyx":68 * continue * if radians: * projlonlatin.u = lonsdata[i] # <<<<<<<<<<<<<< @@ -1143,7 +1177,7 @@ */ __pyx_v_projlonlatin.u = (__pyx_v_lonsdata[__pyx_v_i]); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":67 + /* "/Users/jsw/python/basemap/src/_proj.pyx":69 * if radians: * projlonlatin.u = lonsdata[i] * projlonlatin.v = latsdata[i] # <<<<<<<<<<<<<< @@ -1151,51 +1185,51 @@ * projlonlatin.u = _dg2rad*lonsdata[i] */ __pyx_v_projlonlatin.v = (__pyx_v_latsdata[__pyx_v_i]); - goto __pyx_L12; + goto __pyx_L13; } /*else*/ { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":69 + /* "/Users/jsw/python/basemap/src/_proj.pyx":71 * projlonlatin.v = latsdata[i] * else: * projlonlatin.u = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<< * projlonlatin.v = _dg2rad*latsdata[i] * projxyout = pj_fwd(projlonlatin,self.projpj) */ - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyFloat_FromDouble((__pyx_v_lonsdata[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PyFloat_FromDouble((__pyx_v_lonsdata[__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_projlonlatin.u = __pyx_t_8; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":70 + /* "/Users/jsw/python/basemap/src/_proj.pyx":72 * else: * projlonlatin.u = _dg2rad*lonsdata[i] * projlonlatin.v = _dg2rad*latsdata[i] # <<<<<<<<<<<<<< * projxyout = pj_fwd(projlonlatin,self.projpj) * if errcheck and pj_errno != 0: */ - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyFloat_FromDouble((__pyx_v_latsdata[__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyFloat_FromDouble((__pyx_v_latsdata[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_projlonlatin.v = __pyx_t_8; } - __pyx_L12:; + __pyx_L13:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":71 + /* "/Users/jsw/python/basemap/src/_proj.pyx":73 * projlonlatin.u = _dg2rad*lonsdata[i] * projlonlatin.v = _dg2rad*latsdata[i] * projxyout = pj_fwd(projlonlatin,self.projpj) # <<<<<<<<<<<<<< @@ -1204,14 +1238,14 @@ */ __pyx_v_projxyout = pj_fwd(__pyx_v_projlonlatin, ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":72 + /* "/Users/jsw/python/basemap/src/_proj.pyx":74 * projlonlatin.v = _dg2rad*latsdata[i] * projxyout = pj_fwd(projlonlatin,self.projpj) * if errcheck and pj_errno != 0: # <<<<<<<<<<<<<< * raise RuntimeError(pj_strerrno(pj_errno)) * # since HUGE_VAL can be 'inf', */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_7) { __pyx_t_1 = (pj_errno != 0); __pyx_t_6 = __pyx_t_1; @@ -1220,86 +1254,178 @@ } if (__pyx_t_6) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":73 + /* "/Users/jsw/python/basemap/src/_proj.pyx":75 * projxyout = pj_fwd(projlonlatin,self.projpj) * if errcheck and pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< * # since HUGE_VAL can be 'inf', * # change it to a real (but very large) number. */ - __pyx_t_4 = PyBytes_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyBytes_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_2)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_4)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); - __pyx_t_4 = 0; - __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_2, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L13; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L14; } - __pyx_L13:; + __pyx_L14:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":76 - * # since HUGE_VAL can be 'inf', + /* "/Users/jsw/python/basemap/src/_proj.pyx":79 * # change it to a real (but very large) number. - * if projxyout.u == HUGE_VAL: # <<<<<<<<<<<<<< + * # also check for NaNs. + * if projxyout.u == HUGE_VAL or\ # <<<<<<<<<<<<<< + * projxyout.u != projxyout.u: + * if errcheck: + */ + __pyx_t_6 = (__pyx_v_projxyout.u == HUGE_VAL); + if (!__pyx_t_6) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":80 + * # also check for NaNs. + * if projxyout.u == HUGE_VAL or\ + * projxyout.u != projxyout.u: # <<<<<<<<<<<<<< + * if errcheck: + * raise RuntimeError('projection undefined') + */ + __pyx_t_7 = (__pyx_v_projxyout.u != __pyx_v_projxyout.u); + __pyx_t_1 = __pyx_t_7; + } else { + __pyx_t_1 = __pyx_t_6; + } + if (__pyx_t_1) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":81 + * if projxyout.u == HUGE_VAL or\ + * projxyout.u != projxyout.u: + * if errcheck: # <<<<<<<<<<<<<< + * raise RuntimeError('projection undefined') * lonsdata[i] = 1.e30 + */ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_1) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":82 + * projxyout.u != projxyout.u: + * if errcheck: + * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< + * lonsdata[i] = 1.e30 * else: */ - __pyx_t_6 = (__pyx_v_projxyout.u == HUGE_VAL); - if (__pyx_t_6) { + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_4)); + PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_s_4)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_4)); + __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_4, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L16; + } + __pyx_L16:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":77 - * # change it to a real (but very large) number. - * if projxyout.u == HUGE_VAL: + /* "/Users/jsw/python/basemap/src/_proj.pyx":83 + * if errcheck: + * raise RuntimeError('projection undefined') * lonsdata[i] = 1.e30 # <<<<<<<<<<<<<< * else: * lonsdata[i] = projxyout.u */ (__pyx_v_lonsdata[__pyx_v_i]) = 1.e30; - goto __pyx_L14; + goto __pyx_L15; } /*else*/ { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":79 + /* "/Users/jsw/python/basemap/src/_proj.pyx":85 * lonsdata[i] = 1.e30 * else: * lonsdata[i] = projxyout.u # <<<<<<<<<<<<<< - * if projxyout.v == HUGE_VAL: - * latsdata[i] = 1.e30 + * if projxyout.v == HUGE_VAL or\ + * projxyout.u != projxyout.u: */ (__pyx_v_lonsdata[__pyx_v_i]) = __pyx_v_projxyout.u; } - __pyx_L14:; + __pyx_L15:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":80 + /* "/Users/jsw/python/basemap/src/_proj.pyx":86 * else: * lonsdata[i] = projxyout.u - * if projxyout.v == HUGE_VAL: # <<<<<<<<<<<<<< + * if projxyout.v == HUGE_VAL or\ # <<<<<<<<<<<<<< + * projxyout.u != projxyout.u: + * if errcheck: + */ + __pyx_t_1 = (__pyx_v_projxyout.v == HUGE_VAL); + if (!__pyx_t_1) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":87 + * lonsdata[i] = projxyout.u + * if projxyout.v == HUGE_VAL or\ + * projxyout.u != projxyout.u: # <<<<<<<<<<<<<< + * if errcheck: + * raise RuntimeError('projection undefined') + */ + __pyx_t_6 = (__pyx_v_projxyout.u != __pyx_v_projxyout.u); + __pyx_t_7 = __pyx_t_6; + } else { + __pyx_t_7 = __pyx_t_1; + } + if (__pyx_t_7) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":88 + * if projxyout.v == HUGE_VAL or\ + * projxyout.u != projxyout.u: + * if errcheck: # <<<<<<<<<<<<<< + * raise RuntimeError('projection undefined') * latsdata[i] = 1.e30 + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_7) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":89 + * projxyout.u != projxyout.u: + * if errcheck: + * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< + * latsdata[i] = 1.e30 * else: */ - __pyx_t_6 = (__pyx_v_projxyout.v == HUGE_VAL); - if (__pyx_t_6) { + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_4)); + PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_4)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_4)); + __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_2, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L18; + } + __pyx_L18:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":81 - * lonsdata[i] = projxyout.u - * if projxyout.v == HUGE_VAL: + /* "/Users/jsw/python/basemap/src/_proj.pyx":90 + * if errcheck: + * raise RuntimeError('projection undefined') * latsdata[i] = 1.e30 # <<<<<<<<<<<<<< * else: * latsdata[i] = projxyout.v */ (__pyx_v_latsdata[__pyx_v_i]) = 1.e30; - goto __pyx_L15; + goto __pyx_L17; } /*else*/ { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":83 + /* "/Users/jsw/python/basemap/src/_proj.pyx":92 * latsdata[i] = 1.e30 * else: * latsdata[i] = projxyout.v # <<<<<<<<<<<<<< @@ -1308,7 +1434,7 @@ */ (__pyx_v_latsdata[__pyx_v_i]) = __pyx_v_projxyout.v; } - __pyx_L15:; + __pyx_L17:; __pyx_L9_continue:; } @@ -1326,7 +1452,7 @@ return __pyx_r; } -/* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":85 +/* "/Users/jsw/python/basemap/src/_proj.pyx":94 * latsdata[i] = projxyout.v * * def _inv(self, object x, object y, radians=False, errcheck=False): # <<<<<<<<<<<<<< @@ -1365,8 +1491,8 @@ if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args = PyDict_Size(__pyx_kwds); PyObject* values[4] = {0,0,0,0}; - values[2] = __pyx_k_4; - values[3] = __pyx_k_5; + values[2] = __pyx_k_5; + values[3] = __pyx_k_6; switch (PyTuple_GET_SIZE(__pyx_args)) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); @@ -1384,7 +1510,7 @@ values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y); if (likely(values[1])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_inv", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_inv", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (kw_args > 0) { @@ -1398,15 +1524,15 @@ } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_inv") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_inv") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } __pyx_v_x = values[0]; __pyx_v_y = values[1]; __pyx_v_radians = values[2]; __pyx_v_errcheck = values[3]; } else { - __pyx_v_radians = __pyx_k_4; - __pyx_v_errcheck = __pyx_k_5; + __pyx_v_radians = __pyx_k_5; + __pyx_v_errcheck = __pyx_k_6; switch (PyTuple_GET_SIZE(__pyx_args)) { case 4: __pyx_v_errcheck = PyTuple_GET_ITEM(__pyx_args, 3); @@ -1421,14 +1547,14 @@ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_inv", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_inv", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("_proj.Proj._inv"); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":99 + /* "/Users/jsw/python/basemap/src/_proj.pyx":108 * cdef double *xdatab, *ydatab * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(x, &xdata, &buflenx) <> 0: # <<<<<<<<<<<<<< @@ -1438,7 +1564,7 @@ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_x, (&__pyx_v_xdata), (&__pyx_v_buflenx)) != 0); if (__pyx_t_1) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":100 + /* "/Users/jsw/python/basemap/src/_proj.pyx":109 * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(x, &xdata, &buflenx) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1446,12 +1572,12 @@ * raise RuntimeError */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L6; } __pyx_L6:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":101 + /* "/Users/jsw/python/basemap/src/_proj.pyx":110 * if PyObject_AsWriteBuffer(x, &xdata, &buflenx) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(y, &ydata, &bufleny) <> 0: # <<<<<<<<<<<<<< @@ -1461,7 +1587,7 @@ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_y, (&__pyx_v_ydata), (&__pyx_v_bufleny)) != 0); if (__pyx_t_1) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":102 + /* "/Users/jsw/python/basemap/src/_proj.pyx":111 * raise RuntimeError * if PyObject_AsWriteBuffer(y, &ydata, &bufleny) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1469,12 +1595,12 @@ * # (for numpy/regular python arrays). */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L7; } __pyx_L7:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":105 + /* "/Users/jsw/python/basemap/src/_proj.pyx":114 * # process data in buffer * # (for numpy/regular python arrays). * if buflenx != bufleny: # <<<<<<<<<<<<<< @@ -1484,48 +1610,48 @@ __pyx_t_1 = (__pyx_v_buflenx != __pyx_v_bufleny); if (__pyx_t_1) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":106 + /* "/Users/jsw/python/basemap/src/_proj.pyx":115 * # (for numpy/regular python arrays). * if buflenx != bufleny: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< * ndim = buflenx/_doublesize * xdatab = <double *>xdata */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_kp_s_3)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_s_3)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_3)); - __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_Raise(__pyx_t_3, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L8; } __pyx_L8:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":107 + /* "/Users/jsw/python/basemap/src/_proj.pyx":116 * if buflenx != bufleny: * raise RuntimeError("Buffer lengths not the same") * ndim = buflenx/_doublesize # <<<<<<<<<<<<<< * xdatab = <double *>xdata * ydatab = <double *>ydata */ - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_buflenx); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_buflenx); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___doublesize); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___doublesize); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_ndim = __pyx_t_5; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":108 + /* "/Users/jsw/python/basemap/src/_proj.pyx":117 * raise RuntimeError("Buffer lengths not the same") * ndim = buflenx/_doublesize * xdatab = <double *>xdata # <<<<<<<<<<<<<< @@ -1534,7 +1660,7 @@ */ __pyx_v_xdatab = ((double *)__pyx_v_xdata); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":109 + /* "/Users/jsw/python/basemap/src/_proj.pyx":118 * ndim = buflenx/_doublesize * xdatab = <double *>xdata * ydatab = <double *>ydata # <<<<<<<<<<<<<< @@ -1543,7 +1669,7 @@ */ __pyx_v_ydatab = ((double *)__pyx_v_ydata); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":110 + /* "/Users/jsw/python/basemap/src/_proj.pyx":119 * xdatab = <double *>xdata * ydatab = <double *>ydata * for i from 0 <= i < ndim: # <<<<<<<<<<<<<< @@ -1553,12 +1679,12 @@ __pyx_t_5 = __pyx_v_ndim; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":112 + /* "/Users/jsw/python/basemap/src/_proj.pyx":121 * for i from 0 <= i < ndim: * # if inputs are nan's, return big number. * if xdatab[i] != xdatab[i] or ydatab[i] != ydatab[i]: # <<<<<<<<<<<<<< * xdatab[i]=1.e30; ydatab[i]=1.e30 - * continue + * if errcheck: */ __pyx_t_1 = ((__pyx_v_xdatab[__pyx_v_i]) != (__pyx_v_xdatab[__pyx_v_i])); if (!__pyx_t_1) { @@ -1569,19 +1695,51 @@ } if (__pyx_t_7) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":113 + /* "/Users/jsw/python/basemap/src/_proj.pyx":122 * # if inputs are nan's, return big number. * if xdatab[i] != xdatab[i] or ydatab[i] != ydatab[i]: * xdatab[i]=1.e30; ydatab[i]=1.e30 # <<<<<<<<<<<<<< - * continue - * projxyin.u = xdatab[i] + * if errcheck: + * raise RuntimeError('projection undefined') */ (__pyx_v_xdatab[__pyx_v_i]) = 1.e30; (__pyx_v_ydatab[__pyx_v_i]) = 1.e30; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":114 + /* "/Users/jsw/python/basemap/src/_proj.pyx":123 * if xdatab[i] != xdatab[i] or ydatab[i] != ydatab[i]: * xdatab[i]=1.e30; ydatab[i]=1.e30 + * if errcheck: # <<<<<<<<<<<<<< + * raise RuntimeError('projection undefined') + * continue + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_7) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":124 + * xdatab[i]=1.e30; ydatab[i]=1.e30 + * if errcheck: + * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< + * continue + * projxyin.u = xdatab[i] + */ + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_4)); + PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_4)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_4)); + __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_2, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L12; + } + __pyx_L12:; + + /* "/Users/jsw/python/basemap/src/_proj.pyx":125 + * if errcheck: + * raise RuntimeError('projection undefined') * continue # <<<<<<<<<<<<<< * projxyin.u = xdatab[i] * projxyin.v = ydatab[i] @@ -1591,8 +1749,8 @@ } __pyx_L11:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":115 - * xdatab[i]=1.e30; ydatab[i]=1.e30 + /* "/Users/jsw/python/basemap/src/_proj.pyx":126 + * raise RuntimeError('projection undefined') * continue * projxyin.u = xdatab[i] # <<<<<<<<<<<<<< * projxyin.v = ydatab[i] @@ -1600,7 +1758,7 @@ */ __pyx_v_projxyin.u = (__pyx_v_xdatab[__pyx_v_i]); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":116 + /* "/Users/jsw/python/basemap/src/_proj.pyx":127 * continue * projxyin.u = xdatab[i] * projxyin.v = ydatab[i] # <<<<<<<<<<<<<< @@ -1609,7 +1767,7 @@ */ __pyx_v_projxyin.v = (__pyx_v_ydatab[__pyx_v_i]); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":117 + /* "/Users/jsw/python/basemap/src/_proj.pyx":128 * projxyin.u = xdatab[i] * projxyin.v = ydatab[i] * projlonlatout = pj_inv(projxyin,self.projpj) # <<<<<<<<<<<<<< @@ -1618,14 +1776,14 @@ */ __pyx_v_projlonlatout = pj_inv(__pyx_v_projxyin, ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj); - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":118 + /* "/Users/jsw/python/basemap/src/_proj.pyx":129 * projxyin.v = ydatab[i] * projlonlatout = pj_inv(projxyin,self.projpj) * if errcheck and pj_errno != 0: # <<<<<<<<<<<<<< * raise RuntimeError(pj_strerrno(pj_errno)) * # since HUGE_VAL can be 'inf', */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_7) { __pyx_t_1 = (pj_errno != 0); __pyx_t_6 = __pyx_t_1; @@ -1634,62 +1792,108 @@ } if (__pyx_t_6) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":119 + /* "/Users/jsw/python/basemap/src/_proj.pyx":130 * projlonlatout = pj_inv(projxyin,self.projpj) * if errcheck and pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< * # since HUGE_VAL can be 'inf', * # change it to a real (but very large) number. */ - __pyx_t_4 = PyBytes_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyBytes_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_2)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_4)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); - __pyx_t_4 = 0; - __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_2, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L12; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L13; } - __pyx_L12:; + __pyx_L13:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":122 - * # since HUGE_VAL can be 'inf', + /* "/Users/jsw/python/basemap/src/_proj.pyx":134 * # change it to a real (but very large) number. - * if projlonlatout.u == HUGE_VAL: # <<<<<<<<<<<<<< + * # also check for NaNs. + * if projlonlatout.u == HUGE_VAL or \ # <<<<<<<<<<<<<< + * projlonlatout.u != projlonlatout.u: + * if errcheck: + */ + __pyx_t_6 = (__pyx_v_projlonlatout.u == HUGE_VAL); + if (!__pyx_t_6) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":135 + * # also check for NaNs. + * if projlonlatout.u == HUGE_VAL or \ + * projlonlatout.u != projlonlatout.u: # <<<<<<<<<<<<<< + * if errcheck: + * raise RuntimeError('projection undefined') + */ + __pyx_t_7 = (__pyx_v_projlonlatout.u != __pyx_v_projlonlatout.u); + __pyx_t_1 = __pyx_t_7; + } else { + __pyx_t_1 = __pyx_t_6; + } + if (__pyx_t_1) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":136 + * if projlonlatout.u == HUGE_VAL or \ + * projlonlatout.u != projlonlatout.u: + * if errcheck: # <<<<<<<<<<<<<< + * raise RuntimeError('projection undefined') * xdatab[i] = 1.e30 + */ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_1) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":137 + * projlonlatout.u != projlonlatout.u: + * if errcheck: + * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< + * xdatab[i] = 1.e30 * elif radians: */ - __pyx_t_6 = (__pyx_v_projlonlatout.u == HUGE_VAL); - if (__pyx_t_6) { + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_4)); + PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_s_4)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_4)); + __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_4, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L15; + } + __pyx_L15:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":123 - * # change it to a real (but very large) number. - * if projlonlatout.u == HUGE_VAL: + /* "/Users/jsw/python/basemap/src/_proj.pyx":138 + * if errcheck: + * raise RuntimeError('projection undefined') * xdatab[i] = 1.e30 # <<<<<<<<<<<<<< * elif radians: * xdatab[i] = projlonlatout.u */ (__pyx_v_xdatab[__pyx_v_i]) = 1.e30; - goto __pyx_L13; + goto __pyx_L14; } - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":124 - * if projlonlatout.u == HUGE_VAL: + /* "/Users/jsw/python/basemap/src/_proj.pyx":139 + * raise RuntimeError('projection undefined') * xdatab[i] = 1.e30 * elif radians: # <<<<<<<<<<<<<< * xdatab[i] = projlonlatout.u * else: */ - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__pyx_t_6) { + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_1) { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":125 + /* "/Users/jsw/python/basemap/src/_proj.pyx":140 * xdatab[i] = 1.e30 * elif radians: * xdatab[i] = projlonlatout.u # <<<<<<<<<<<<<< @@ -1697,63 +1901,109 @@ * xdatab[i] = _rad2dg*projlonlatout.u */ (__pyx_v_xdatab[__pyx_v_i]) = __pyx_v_projlonlatout.u; - goto __pyx_L13; + goto __pyx_L14; } /*else*/ { - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":127 + /* "/Users/jsw/python/basemap/src/_proj.pyx":142 * xdatab[i] = projlonlatout.u * else: * xdatab[i] = _rad2dg*projlonlatout.u # <<<<<<<<<<<<<< - * if projlonlatout.v == HUGE_VAL: - * ydatab[i] = 1.e30 + * if projlonlatout.v == HUGE_VAL or \ + * projlonlatout.v != projlonlatout.v: */ - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PyFloat_FromDouble(__pyx_v_projlonlatout.u); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyFloat_FromDouble(__pyx_v_projlonlatout.u); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; (__pyx_v_xdatab[__pyx_v_i]) = __pyx_t_8; } - __pyx_L13:; + __pyx_L14:; - /* "/Volumes/User/jwhitaker/python/pyproj/_proj.pyx":128 + /* "/Users/jsw/python/basemap/src/_proj.pyx":143 * else: * xdatab[i] = _rad2dg*projlonlatout.u - * if projlonlatout.v == HUGE_VAL: # <<<<<<<<<<<<<< + * if projlonlatout.v == HUGE_VAL or \ # <<<<<<<<<<<<<< + * projlonlatout.v != projlonlatout.v: + * if errcheck: + */ + __pyx_t_1 = (__pyx_v_projlonlatout.v == HUGE_VAL); + if (!__pyx_t_1) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":144 + * xdatab[i] = _rad2dg*projlonlatout.u + * if projlonlatout.v == HUGE_VAL or \ + * projlonlatout.v != projlonlatout.v: # <<<<<<<<<<<<<< + * if errcheck: + * raise RuntimeError('projection undefined') + */ + __pyx_t_6 = (__pyx_v_projlonlatout.v != __pyx_v_projlonlatout.v); + __pyx_t_7 = __pyx_t_6; + } else { + __pyx_t_7 = __pyx_t_1; + } + if (__pyx_t_7) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":145 + * if projlonlatout.v == HUGE_VAL or \ + * projlonlatout.v != projlonlatout.v: + * if errcheck: # <<<<<<<<<<<<<< + * raise RuntimeError('projection undefined') * ydatab[i] = 1.e30 + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_7) { + + /* "/Users/jsw/python/basemap/src/_proj.pyx":146 + * projlonlatout.v != projlonlatout.v: + * if errcheck: + * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< + * ydatab[i] = 1.e30 * elif radians: */ - __pyx_t_6 = (__p... [truncated message content]
Revision: 8866 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8866&view=rev Author: jswhit Date: 2010年12月30日 12:57:05 +0000 (2010年12月30日) Log Message: ----------- update Modified Paths: -------------- trunk/toolkits/basemap/Changelog Modified: trunk/toolkits/basemap/Changelog =================================================================== --- trunk/toolkits/basemap/Changelog 2010年12月30日 12:53:23 UTC (rev 8865) +++ trunk/toolkits/basemap/Changelog 2010年12月30日 12:57:05 UTC (rev 8866) @@ -1,7 +1,8 @@ version 1.0.1 (not yet released). * improve placement of labels for parallels for pseudo-cylindrical projections like mollweide, hammer. - * added support for Hammer-Aitoff projection. + * added support for Hammer projection (required adding inverse + projection to proj4 src in src/PJ_hammer.c). * updated src/pj_mutex.c from proj4 svn to fix a threading bug on Windows. * if you try to transform NaNs to/from map projection coords, 1.e30 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8865 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8865&view=rev Author: jswhit Date: 2010年12月30日 12:53:23 +0000 (2010年12月30日) Log Message: ----------- add info for Hammer projection. Modified Paths: -------------- trunk/toolkits/basemap/doc/users/graticule.rst trunk/toolkits/basemap/doc/users/mapsetup.rst Added Paths: ----------- trunk/toolkits/basemap/doc/users/figures/hammer.py trunk/toolkits/basemap/doc/users/hammer.rst Added: trunk/toolkits/basemap/doc/users/figures/hammer.py =================================================================== --- trunk/toolkits/basemap/doc/users/figures/hammer.py (rev 0) +++ trunk/toolkits/basemap/doc/users/figures/hammer.py 2010年12月30日 12:53:23 UTC (rev 8865) @@ -0,0 +1,14 @@ +from mpl_toolkits.basemap import Basemap +import numpy as np +import matplotlib.pyplot as plt +# lon_0 is central longitude of projection. +# resolution = 'c' means use crude resolution coastlines. +m = Basemap(projection='hammer',lon_0=0,resolution='c') +m.drawcoastlines() +m.fillcontinents(color='coral',lake_color='aqua') +# draw parallels and meridians. +m.drawparallels(np.arange(-90.,120.,30.)) +m.drawmeridians(np.arange(0.,420.,60.)) +m.drawmapboundary(fill_color='aqua') +plt.title("Hammer Projection") +plt.savefig('hammer.png') Modified: trunk/toolkits/basemap/doc/users/graticule.rst =================================================================== --- trunk/toolkits/basemap/doc/users/graticule.rst 2010年12月30日 12:49:13 UTC (rev 8864) +++ trunk/toolkits/basemap/doc/users/graticule.rst 2010年12月30日 12:53:23 UTC (rev 8865) @@ -14,7 +14,8 @@ ``vandg`` (van der Grinten) or ``nsper`` (near-sided perspective), and meridians cannot be labelled on maps with ``proj`` set to ``robin`` (robinson), ``mbtfpq`` -(McBryde-Thomas Flat Polar Quartic), ``moll`` (mollweide) or ``sinu`` +(McBryde-Thomas Flat Polar Quartic), ``moll`` (Mollweide), +``hammer`` (Hammer), or ``sinu`` (sinusoidal). This is because the lines can be very close together where they intersect the boundary on these maps, so that they really need to be labelled manually on the interior of the plot. Added: trunk/toolkits/basemap/doc/users/hammer.rst =================================================================== --- trunk/toolkits/basemap/doc/users/hammer.rst (rev 0) +++ trunk/toolkits/basemap/doc/users/hammer.rst 2010年12月30日 12:53:23 UTC (rev 8865) @@ -0,0 +1,10 @@ +.. _hammer: + +Hammer Projection +==================== + +The hammer projection is a global, elliptical, equal-area projection. + +.. literalinclude:: figures/hammer.py + +.. image:: figures/hammer.png Modified: trunk/toolkits/basemap/doc/users/mapsetup.rst =================================================================== --- trunk/toolkits/basemap/doc/users/mapsetup.rst 2010年12月30日 12:49:13 UTC (rev 8864) +++ trunk/toolkits/basemap/doc/users/mapsetup.rst 2010年12月30日 12:53:23 UTC (rev 8865) @@ -6,7 +6,7 @@ In order to represent the curved surface of the earth on a two-dimensional map, a map projection is needed. Since this cannot be done without distortion, there are many map projections, each with it's own advantages -and disadvantages. Basemap provides 23 different map projections. +and disadvantages. Basemap provides 24 different map projections. Some are global, some can only represent a portion of the globe. When a :class:`~mpl_toolkits.basemap.Basemap` class instance is created, the desired map projection must @@ -39,6 +39,7 @@ geos.rst nsper.rst moll.rst + hammer.rst robin.rst sinu.rst cyl.rst This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8864 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8864&view=rev Author: jswhit Date: 2010年12月30日 12:49:13 +0000 (2010年12月30日) Log Message: ----------- refer to new projection as Hammer, not Hammer-Aitoff Modified Paths: -------------- trunk/toolkits/basemap/examples/test.py trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py Modified: trunk/toolkits/basemap/examples/test.py =================================================================== --- trunk/toolkits/basemap/examples/test.py 2010年12月29日 21:54:10 UTC (rev 8863) +++ trunk/toolkits/basemap/examples/test.py 2010年12月30日 12:49:13 UTC (rev 8864) @@ -610,7 +610,7 @@ # create new figure fig=plt.figure() -# setup of basemap ('hammer' = Hammer-Aitoff projection) +# setup of basemap ('hammer' = Hammer projection) m = Basemap(projection='hammer', resolution='c',area_thresh=10000.,lon_0=0.5*(lonsin[0]+lonsin[-1])) ax = fig.add_axes([0.1,0.1,0.7,0.7]) Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py =================================================================== --- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2010年12月29日 21:54:10 UTC (rev 8863) +++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2010年12月30日 12:49:13 UTC (rev 8864) @@ -82,7 +82,7 @@ 'nsper' : 'Near-Sided Perspective', 'sinu' : 'Sinusoidal', 'moll' : 'Mollweide', - 'hammer' : 'Hammer-Aitoff', + 'hammer' : 'Hammer', 'robin' : 'Robinson', 'vandg' : 'van der Grinten', 'mbtfpq' : 'McBryde-Thomas Flat-Polar Quartic', This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8863 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8863&view=rev Author: jswhit Date: 2010年12月29日 21:54:10 +0000 (2010年12月29日) Log Message: ----------- avoid warning messages when labelling meridians Modified Paths: -------------- trunk/toolkits/basemap/examples/plot_tissot.py Modified: trunk/toolkits/basemap/examples/plot_tissot.py =================================================================== --- trunk/toolkits/basemap/examples/plot_tissot.py 2010年12月29日 21:43:26 UTC (rev 8862) +++ trunk/toolkits/basemap/examples/plot_tissot.py 2010年12月29日 21:54:10 UTC (rev 8863) @@ -37,8 +37,16 @@ for meridian in range(-165,166,30): poly = m.tissot(meridian,parallel,6,100,facecolor='green',zorder=10,alpha=0.5) # draw meridians and parallels. - m.drawparallels(np.arange(-60,61,30),labels=[1,0,0,0]) - m.drawmeridians(np.arange(-180,180,60),labels=[0,0,0,1]) + if m.projection != 'ortho': + labels = [1,0,0,0] + else: + labels = [0,0,0,0] + m.drawparallels(np.arange(-60,61,30),labels=labels) + if m.projection not in ['moll','hammer','mbtfpq','ortho']: + labels = [0,0,0,1] + else: + labels = [0,0,0,0] + m.drawmeridians(np.arange(-180,180,60),labels=labels) # draw coastlines, fill continents, plot title. m.drawcoastlines() m.drawmapboundary(fill_color='aqua') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8862 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8862&view=rev Author: jswhit Date: 2010年12月29日 21:43:26 +0000 (2010年12月29日) Log Message: ----------- add some more projections, label parallels and meridians. Modified Paths: -------------- trunk/toolkits/basemap/examples/plot_tissot.py Modified: trunk/toolkits/basemap/examples/plot_tissot.py =================================================================== --- trunk/toolkits/basemap/examples/plot_tissot.py 2010年12月29日 19:18:24 UTC (rev 8861) +++ trunk/toolkits/basemap/examples/plot_tissot.py 2010年12月29日 21:43:26 UTC (rev 8862) @@ -25,9 +25,11 @@ m5 = Basemap(lon_0=270,lat_0=90,boundinglat=10,projection='nplaea') m6 = Basemap(lon_0=0,projection='moll') m7 = Basemap(lon_0=0,projection='robin') -m8 = Basemap(lon_0=0,projection='mbtfpq') +m8 = Basemap(lon_0=0,projection='hammer') +m9 = Basemap(lon_0=0,projection='mbtfpq') +m10 = Basemap(lon_0=270,lat_0=90,boundinglat=10,projection='npaeqd') -for m in [m1,m2,m3,m4,m5,m6,m7,m8]: +for m in [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10]: # make a new figure. fig = plt.figure() # draw "circles" at specified longitudes and latitudes. @@ -35,8 +37,8 @@ for meridian in range(-165,166,30): poly = m.tissot(meridian,parallel,6,100,facecolor='green',zorder=10,alpha=0.5) # draw meridians and parallels. - m.drawparallels(np.arange(-60,61,30)) - m.drawmeridians(np.arange(-180,180,60)) + m.drawparallels(np.arange(-60,61,30),labels=[1,0,0,0]) + m.drawmeridians(np.arange(-180,180,60),labels=[0,0,0,1]) # draw coastlines, fill continents, plot title. m.drawcoastlines() m.drawmapboundary(fill_color='aqua') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8861 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8861&view=rev Author: jswhit Date: 2010年12月29日 19:18:24 +0000 (2010年12月29日) Log Message: ----------- add Hammer Modified Paths: -------------- trunk/toolkits/basemap/examples/test.py Modified: trunk/toolkits/basemap/examples/test.py =================================================================== --- trunk/toolkits/basemap/examples/test.py 2010年12月29日 18:51:07 UTC (rev 8860) +++ trunk/toolkits/basemap/examples/test.py 2010年12月29日 19:18:24 UTC (rev 8861) @@ -610,6 +610,33 @@ # create new figure fig=plt.figure() +# setup of basemap ('hammer' = Hammer-Aitoff projection) +m = Basemap(projection='hammer', + resolution='c',area_thresh=10000.,lon_0=0.5*(lonsin[0]+lonsin[-1])) +ax = fig.add_axes([0.1,0.1,0.7,0.7]) +# plot image over map with pcolormesh. +x,y = m(*np.meshgrid(lonsin,latsin)) +p = m.pcolormesh(x,y,topodatin,shading='flat') +pos = ax.get_position() +l, b, w, h = pos.bounds +cax = plt.axes([l+w+0.05, b, 0.05, h]) # setup colorbar axes. +plt.colorbar(cax=cax) # draw colorbar +plt.axes(ax) # make the original axes current again +# draw coastlines and political boundaries. +m.drawcoastlines() +# draw parallels and meridians +parallels = np.arange(-60.,90,30.) +m.drawparallels(parallels,labels=[1,0,0,0]) +meridians = np.arange(0.,360.,30.) +m.drawmeridians(meridians) +# draw boundary around map region. +m.drawmapboundary() +plt.title('Hammer') +print 'plotting Hammer example ...' +print m.proj4string + +# create new figure +fig=plt.figure() # setup of basemap ('robin' = robinson projection) m = Basemap(projection='robin', resolution='c',area_thresh=10000.,lon_0=0.5*(lonsin[0]+lonsin[-1])) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8860 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8860&view=rev Author: jswhit Date: 2010年12月29日 18:51:07 +0000 (2010年12月29日) Log Message: ----------- improve labelling of parallels Modified Paths: -------------- trunk/toolkits/basemap/Changelog Modified: trunk/toolkits/basemap/Changelog =================================================================== --- trunk/toolkits/basemap/Changelog 2010年12月29日 18:50:10 UTC (rev 8859) +++ trunk/toolkits/basemap/Changelog 2010年12月29日 18:51:07 UTC (rev 8860) @@ -1,4 +1,6 @@ version 1.0.1 (not yet released). + * improve placement of labels for parallels for pseudo-cylindrical + projections like mollweide, hammer. * added support for Hammer-Aitoff projection. * updated src/pj_mutex.c from proj4 svn to fix a threading bug on Windows. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8859 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8859&view=rev Author: jswhit Date: 2010年12月29日 18:50:10 +0000 (2010年12月29日) Log Message: ----------- improve labelling of parallels on pseudo-cylindrical projections (like hammer, mollweide) Modified Paths: -------------- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py =================================================================== --- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2010年12月29日 18:36:40 UTC (rev 8858) +++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2010年12月29日 18:50:10 UTC (rev 8859) @@ -2010,14 +2010,30 @@ else: xlab = self.llcrnrx xlab = xlab-xoffset - t = ax.text(xlab,yy[n],latlab,horizontalalignment='right',verticalalignment='center',**kwargs) + if self.projection in _pseudocyl: + if lat>0: + t=ax.text(xlab,yy[n],latlab,horizontalalignment='right',verticalalignment='bottom',**kwargs) + elif lat<0: + t=ax.text(xlab,yy[n],latlab,horizontalalignment='right',verticalalignment='top',**kwargs) + else: + t=ax.text(xlab,yy[n],latlab,horizontalalignment='right',verticalalignment='center',**kwargs) + else: + t=ax.text(xlab,yy[n],latlab,horizontalalignment='right',verticalalignment='center',**kwargs) elif side == 'r': if self.projection in _pseudocyl: xlab,ylab = self(lon_0+179.9,lat) else: xlab = self.urcrnrx xlab = xlab+xoffset - t = ax.text(xlab,yy[n],latlab,horizontalalignment='left',verticalalignment='center',**kwargs) + if self.projection in _pseudocyl: + if lat>0: + t=ax.text(xlab,yy[n],latlab,horizontalalignment='left',verticalalignment='bottom',**kwargs) + elif lat<0: + t=ax.text(xlab,yy[n],latlab,horizontalalignment='left',verticalalignment='top',**kwargs) + else: + t=ax.text(xlab,yy[n],latlab,horizontalalignment='left',verticalalignment='center',**kwargs) + else: + t=ax.text(xlab,yy[n],latlab,horizontalalignment='left',verticalalignment='center',**kwargs) elif side == 'b': t = ax.text(xx[n],self.llcrnry-yoffset,latlab,horizontalalignment='center',verticalalignment='top',**kwargs) else: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8858 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8858&view=rev Author: jswhit Date: 2010年12月29日 18:36:40 +0000 (2010年12月29日) Log Message: ----------- fix labelling of parallels on right of Hammer map. Modified Paths: -------------- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py =================================================================== --- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2010年12月29日 18:33:34 UTC (rev 8857) +++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2010年12月29日 18:36:40 UTC (rev 8858) @@ -1934,8 +1934,14 @@ lons,lats = self(xx,yy,inverse=True) lons = lons.tolist(); lats = lats.tolist() else: - lons,lats = self(self.urcrnrx*np.ones(yy.shape,np.float32),yy,inverse=True) - lons = lons.tolist(); lats = lats.tolist() + if self.projection in _pseudocyl: + lats = np.linspace(-89.99,89,99,nmax) + lons = (self.projparams['lon_0']+180.)*np.ones(len(lats),lats.dtype) + xx, yy = self(lons, lats) + else: + xx = self.urcrnrx*np.ones(yy.shape,yy.dtype) + lons,lats = self(xx,yy,inverse=True) + lons = lons.tolist(); lats = lats.tolist() if max(lons) > 1.e20 or max(lats) > 1.e20: raise ValueError,'inverse transformation undefined - please adjust the map projection region' # adjust so 0 <= lons < 360 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8857 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8857&view=rev Author: jswhit Date: 2010年12月29日 18:33:34 +0000 (2010年12月29日) Log Message: ----------- added support for Hammer. Modified Paths: -------------- trunk/toolkits/basemap/Changelog Modified: trunk/toolkits/basemap/Changelog =================================================================== --- trunk/toolkits/basemap/Changelog 2010年12月29日 18:32:50 UTC (rev 8856) +++ trunk/toolkits/basemap/Changelog 2010年12月29日 18:33:34 UTC (rev 8857) @@ -1,4 +1,5 @@ version 1.0.1 (not yet released). + * added support for Hammer-Aitoff projection. * updated src/pj_mutex.c from proj4 svn to fix a threading bug on Windows. * if you try to transform NaNs to/from map projection coords, 1.e30 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8856 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8856&view=rev Author: jswhit Date: 2010年12月29日 18:32:50 +0000 (2010年12月29日) Log Message: ----------- fix labelling of parallels on hammer map. Modified Paths: -------------- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py =================================================================== --- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2010年12月29日 18:05:38 UTC (rev 8855) +++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2010年12月29日 18:32:50 UTC (rev 8856) @@ -1924,13 +1924,15 @@ if side in ['l','r']: nmax = int((self.ymax-self.ymin)/dy+1) yy = np.linspace(self.llcrnry,self.urcrnry,nmax) - # mollweide inverse transform undefined at South Pole - if self.projection == 'moll' and yy[0] < 1.e-4: - yy[0] = 1.e-4 if side == 'l': - xx = self.llcrnrx*np.ones(yy.shape,yy.dtype) - lons,lats = self(xx,yy,inverse=True) - lons = lons.tolist(); lats = lats.tolist() + if self.projection in _pseudocyl: + lats = np.linspace(-89.99,89,99,nmax) + lons = (self.projparams['lon_0']-180.)*np.ones(len(lats),lats.dtype) + xx, yy = self(lons, lats) + else: + xx = self.llcrnrx*np.ones(yy.shape,yy.dtype) + lons,lats = self(xx,yy,inverse=True) + lons = lons.tolist(); lats = lats.tolist() else: lons,lats = self(self.urcrnrx*np.ones(yy.shape,np.float32),yy,inverse=True) lons = lons.tolist(); lats = lats.tolist() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8855 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8855&view=rev Author: jswhit Date: 2010年12月29日 18:05:38 +0000 (2010年12月29日) Log Message: ----------- add initial support for hammer projection (labelling of parallels does not yet work) Modified Paths: -------------- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py trunk/toolkits/basemap/lib/mpl_toolkits/basemap/proj.py trunk/toolkits/basemap/src/PJ_hammer.c Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py =================================================================== --- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2010年12月29日 14:18:30 UTC (rev 8854) +++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2010年12月29日 18:05:38 UTC (rev 8855) @@ -82,6 +82,7 @@ 'nsper' : 'Near-Sided Perspective', 'sinu' : 'Sinusoidal', 'moll' : 'Mollweide', + 'hammer' : 'Hammer-Aitoff', 'robin' : 'Robinson', 'vandg' : 'van der Grinten', 'mbtfpq' : 'McBryde-Thomas Flat-Polar Quartic', @@ -93,7 +94,7 @@ supported_projections = ''.join(supported_projections) _cylproj = ['cyl','merc','mill','gall'] -_pseudocyl = ['moll','robin','sinu','mbtfpq','vandg'] +_pseudocyl = ['moll','robin','sinu','mbtfpq','vandg','hammer'] # projection specific parameters. projection_params = {'cyl' : 'corners only (no width/height)', @@ -121,6 +122,7 @@ 'nsper' : 'lon_0,satellite_height,llcrnrx,llcrnry,urcrnrx,urcrnry,no width/height', 'sinu' : 'lon_0,lat_0,no corners or width/height', 'moll' : 'lon_0,lat_0,no corners or width/height', + 'hammer' : 'lon_0,lat_0,no corners or width/height', 'robin' : 'lon_0,lat_0,no corners or width/height', 'vandg' : 'lon_0,lat_0,no corners or width/height', 'mbtfpq' : 'lon_0,lat_0,no corners or width/height', @@ -183,7 +185,7 @@ lat_0 center of desired map domain (in degrees). ============== ==================================================== - For ``sinu``, ``moll``, ``npstere``, ``spstere``, ``nplaea``, ``splaea``, + For ``sinu``, ``moll``, ``hammer``, ``npstere``, ``spstere``, ``nplaea``, ``splaea``, ``npaeqd``, ``spaeqd``, ``robin`` or ``mbtfpq``, the values of llcrnrlon, llcrnrlat, urcrnrlon, urcrnrlat, width and height are ignored (because either they are computed internally, or entire globe is @@ -1923,10 +1925,11 @@ nmax = int((self.ymax-self.ymin)/dy+1) yy = np.linspace(self.llcrnry,self.urcrnry,nmax) # mollweide inverse transform undefined at South Pole - if self.projection == 'moll' and yy[0] < 1.e-4: + if self.projection == 'moll' and yy[0] < 1.e-4: yy[0] = 1.e-4 if side == 'l': - lons,lats = self(self.llcrnrx*np.ones(yy.shape,np.float32),yy,inverse=True) + xx = self.llcrnrx*np.ones(yy.shape,yy.dtype) + lons,lats = self(xx,yy,inverse=True) lons = lons.tolist(); lats = lats.tolist() else: lons,lats = self(self.urcrnrx*np.ones(yy.shape,np.float32),yy,inverse=True) @@ -2148,9 +2151,9 @@ lines.append(l) linecolls[merid] = (lines,[]) # draw labels for meridians. - # meridians not labelled for sinusoidal, mollweide, or - # or full-disk orthographic/geostationary. - if self.projection in ['sinu','moll','vandg'] and max(labels): + # meridians not labelled for sinusoidal, hammer, mollweide, + # VanDerGrinten or full-disk orthographic/geostationary. + if self.projection in ['sinu','moll','hammer','vandg'] and max(labels): print 'Warning: Cannot label meridians on %s basemap' % _projnames[self.projection] labels = [0,0,0,0] if self.projection in ['ortho','geos','nsper','aeqd'] and max(labels): Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/proj.py =================================================================== --- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/proj.py 2010年12月29日 14:18:30 UTC (rev 8854) +++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/proj.py 2010年12月29日 18:05:38 UTC (rev 8855) @@ -8,7 +8,7 @@ _rad2dg = math.degrees(1.) _cylproj = ['cyl','merc','mill','gall'] -_pseudocyl = ['moll','robin','sinu','mbtfpq','vandg'] +_pseudocyl = ['moll','robin','sinu','mbtfpq','vandg','hammer'] _upper_right_out_of_bounds = ( 'the upper right corner of the plot is not in the map projection region') Modified: trunk/toolkits/basemap/src/PJ_hammer.c =================================================================== --- trunk/toolkits/basemap/src/PJ_hammer.c 2010年12月29日 14:18:30 UTC (rev 8854) +++ trunk/toolkits/basemap/src/PJ_hammer.c 2010年12月29日 18:05:38 UTC (rev 8855) @@ -4,7 +4,7 @@ #define PJ_LIB__ # include <projects.h> PROJ_HEAD(hammer, "Hammer & Eckert-Greifendorff") - "\n\tMisc Sph, no inv.\n\tW= M="; + "\n\tMisc Sph, \n\tW= M="; FORWARD(s_forward); /* spheroid */ double cosphi, d; @@ -13,6 +13,13 @@ xy.y = P->rm * d * sin(lp.phi); return (xy); } +INVERSE(s_inverse); /* spheroid */ + double z; + z = sqrt(1. - (0.5 * P->w * xy.x) * (0.5 * P->w * xy.x) - (0.5 * xy.y) * (0.5 * xy.y)); + lp.lam = aatan2(P->w * xy.x * z,2. * z * z - 1)/P->w; + lp.phi = aasin(z * xy.y); + return (lp); +} FREEUP; if (P) pj_dalloc(P); } ENTRY0(hammer) if (pj_param(P->params, "tW").i) { @@ -25,5 +32,5 @@ P->m = 1.; P->rm = 1. / P->m; P->m /= P->w; - P->es = 0.; P->fwd = s_forward; + P->es = 0.; P->fwd = s_forward; P->inv = s_inverse; ENDENTRY(P) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8854 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8854&view=rev Author: jswhit Date: 2010年12月29日 14:18:30 +0000 (2010年12月29日) Log Message: ----------- updated src/pj_mutex.c from proj4 svn to fix a threading bug on Windows. Modified Paths: -------------- trunk/toolkits/basemap/Changelog trunk/toolkits/basemap/src/pj_mutex.c Modified: trunk/toolkits/basemap/Changelog =================================================================== --- trunk/toolkits/basemap/Changelog 2010年12月29日 08:30:32 UTC (rev 8853) +++ trunk/toolkits/basemap/Changelog 2010年12月29日 14:18:30 UTC (rev 8854) @@ -1,4 +1,9 @@ version 1.0.1 (not yet released). + * updated src/pj_mutex.c from proj4 svn to fix a threading bug + on Windows. + * if you try to transform NaNs to/from map projection coords, 1.e30 + is returned (previously, this caused a segfault for some + projections). * NetCDFFile function deprecated, will be removed in 1.0.2. Issue warning advising users to use netcdf4-python instead. * Deleting an item from the dicts returned by drawparallels Modified: trunk/toolkits/basemap/src/pj_mutex.c =================================================================== --- trunk/toolkits/basemap/src/pj_mutex.c 2010年12月29日 08:30:32 UTC (rev 8853) +++ trunk/toolkits/basemap/src/pj_mutex.c 2010年12月29日 14:18:30 UTC (rev 8854) @@ -181,8 +181,8 @@ { if( mutex_lock == NULL ) pj_init_lock(); - - ReleaseMutex( mutex_lock ); + else + ReleaseMutex( mutex_lock ); } /************************************************************************/ @@ -205,7 +205,7 @@ { if( mutex_lock == NULL ) - mutex_lock = CreateMutex( NULL, TRUE, NULL ); + mutex_lock = CreateMutex( NULL, FALSE, NULL ); } #endif // def MUTEX_win32 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8853 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8853&view=rev Author: leejjoon Date: 2010年12月29日 08:30:32 +0000 (2010年12月29日) Log Message: ----------- axes_grid1.grid_finder.FormatterPrettyPrint takes useMathText parameter Modified Paths: -------------- trunk/matplotlib/lib/mpl_toolkits/axisartist/grid_finder.py Modified: trunk/matplotlib/lib/mpl_toolkits/axisartist/grid_finder.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/axisartist/grid_finder.py 2010年12月29日 08:29:59 UTC (rev 8852) +++ trunk/matplotlib/lib/mpl_toolkits/axisartist/grid_finder.py 2010年12月29日 08:30:32 UTC (rev 8853) @@ -298,8 +298,8 @@ # Tick Formatter class FormatterPrettyPrint(object): - def __init__(self): - self._fmt = mticker.ScalarFormatter() + def __init__(self, useMathText=True): + self._fmt = mticker.ScalarFormatter(useMathText=useMathText) self._fmt.create_dummy_axis() self._ignore_factor = True This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8852 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8852&view=rev Author: leejjoon Date: 2010年12月29日 08:29:59 +0000 (2010年12月29日) Log Message: ----------- mpl_tollkits.axes_grid1 support auto-adjusted axes area Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/axes.py trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_divider.py trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_size.py Added Paths: ----------- trunk/matplotlib/examples/axes_grid/make_room_for_ylabel_using_axesgrid.py Added: trunk/matplotlib/examples/axes_grid/make_room_for_ylabel_using_axesgrid.py =================================================================== --- trunk/matplotlib/examples/axes_grid/make_room_for_ylabel_using_axesgrid.py (rev 0) +++ trunk/matplotlib/examples/axes_grid/make_room_for_ylabel_using_axesgrid.py 2010年12月29日 08:29:59 UTC (rev 8852) @@ -0,0 +1,62 @@ +from mpl_toolkits.axes_grid1 import make_axes_locatable +from mpl_toolkits.axes_grid1.axes_divider import make_axes_area_auto_adjustable + + + +if __name__ == "__main__": + + import matplotlib.pyplot as plt + def ex1(): + plt.figure(1) + ax = plt.axes([0,0,1,1]) + # ax = plt.subplot(111) + + ax.set_yticks([0.5]) + ax.set_yticklabels(["very long label"]) + + make_axes_area_auto_adjustable(ax) + + + def ex2(): + + plt.figure(2) + ax1 = plt.axes([0,0,1,0.5]) + ax2 = plt.axes([0,0.5,1,0.5]) + + ax1.set_yticks([0.5]) + ax1.set_yticklabels(["very long label"]) + ax1.set_ylabel("Y label") + + ax2.set_title("Title") + + make_axes_area_auto_adjustable(ax1, pad=0.1, use_axes=[ax1, ax2]) + make_axes_area_auto_adjustable(ax2, pad=0.1, use_axes=[ax1, ax2]) + + def ex3(): + + fig = plt.figure(3) + ax1 = plt.axes([0,0,1,1]) + divider = make_axes_locatable(ax1) + + ax2 = divider.new_horizontal("100%", pad=0.3, sharey=ax1) + ax2.tick_params(labelleft="off") + fig.add_axes(ax2) + + divider.add_auto_adjustable_area(use_axes=[ax1], pad=0.1, + adjust_dirs=["left"]) + divider.add_auto_adjustable_area(use_axes=[ax2], pad=0.1, + adjust_dirs=["right"]) + divider.add_auto_adjustable_area(use_axes=[ax1, ax2], pad=0.1, + adjust_dirs=["top", "bottom"]) + + ax1.set_yticks([0.5]) + ax1.set_yticklabels(["very long label"]) + + ax2.set_title("Title") + ax2.set_xlabel("X - Label") + + ex1() + ex2() + ex3() + + plt.show() Modified: trunk/matplotlib/lib/matplotlib/axes.py =================================================================== --- trunk/matplotlib/lib/matplotlib/axes.py 2010年12月29日 08:29:11 UTC (rev 8851) +++ trunk/matplotlib/lib/matplotlib/axes.py 2010年12月29日 08:29:59 UTC (rev 8852) @@ -8293,10 +8293,12 @@ if self.xaxis.get_visible(): artists.append(self.xaxis.label) bbx1, bbx2 = self.xaxis.get_ticklabel_extents(renderer) + self.xaxis._update_label_position([bbx1], [bbx2]) bb.extend([bbx1, bbx2]) if self.yaxis.get_visible(): artists.append(self.yaxis.label) bby1, bby2 = self.yaxis.get_ticklabel_extents(renderer) + self.yaxis._update_label_position([bby1], [bby2]) bb.extend([bby1, bby2]) Modified: trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_divider.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_divider.py 2010年12月29日 08:29:11 UTC (rev 8851) +++ trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_divider.py 2010年12月29日 08:29:59 UTC (rev 8852) @@ -260,8 +260,34 @@ """ return AxesLocator(self, nx, ny, nx1, ny1) + def append_size(self, position, size): + if position == "left": + self._horizontal.insert(0, size) + self._xrefindex += 1 + elif position == "right": + self._horizontal.append(size) + elif position == "bottom": + self._vertical.insert(0, size) + self._yrefindex += 1 + elif position == "top": + self._vertical.append(size) + else: + raise ValueError("the position must be one of left, right, bottom, or top") + + def add_auto_adjustable_area(self, + use_axes, pad=0.1, + adjust_dirs=["left", "right", "bottom", "top"], + ): + from axes_size import Padded, SizeFromFunc, GetExtentHelper + for d in adjust_dirs: + helper = GetExtentHelper(use_axes, d) + size = SizeFromFunc(helper) + padded_size = Padded(size, pad) # pad in inch + self.append_size(d, padded_size) + + class AxesLocator(object): """ A simple callable object, initiallized with AxesDivider class, @@ -836,7 +862,18 @@ return divider +def make_axes_area_auto_adjustable(ax, + use_axes=None, pad=0.1, + adjust_dirs=["left", "right", "bottom", "top"]): + + divider = make_axes_locatable(ax) + if use_axes is None: + use_axes = ax + + divider.add_auto_adjustable_area(use_axes=use_axes, pad=pad, + adjust_dirs=adjust_dirs) + #from matplotlib.axes import Axes from mpl_axes import Axes LocatableAxes = locatable_axes_factory(Axes) Modified: trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_size.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_size.py 2010年12月29日 08:29:11 UTC (rev 8851) +++ trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_size.py 2010年12月29日 08:29:59 UTC (rev 8852) @@ -12,8 +12,8 @@ """ import matplotlib.cbook as cbook +from matplotlib.axes import Axes - class _Base(object): "Base class" @@ -238,3 +238,54 @@ raise ValueError("Unknown format") +class SizeFromFunc(_Base): + def __init__(self, func): + self._func = func + + def get_size(self, renderer): + rel_size = 0. + + bb = self._func(renderer) + dpi = renderer.points_to_pixels(72.) + abs_size = bb/dpi + + return rel_size, abs_size + +class GetExtentHelper(object): + def _get_left(tight_bbox, axes_bbox): + return axes_bbox.xmin - tight_bbox.xmin + + def _get_right(tight_bbox, axes_bbox): + return tight_bbox.xmax - axes_bbox.xmax + + def _get_bottom(tight_bbox, axes_bbox): + return axes_bbox.ymin - tight_bbox.ymin + + def _get_top(tight_bbox, axes_bbox): + return tight_bbox.ymax - axes_bbox.ymax + + _get_func_map = dict(left=_get_left, + right=_get_right, + bottom=_get_bottom, + top=_get_top) + + del _get_left, _get_right, _get_bottom, _get_top + + def __init__(self, ax, direction): + if isinstance(ax, Axes): + self._ax_list = [ax] + else: + self._ax_list = ax + + try: + self._get_func = self._get_func_map[direction] + except KeyError: + print "direction must be one of left, right, bottom, top" + raise + + def __call__(self, renderer): + vl = [self._get_func(ax.get_tightbbox(renderer), + ax.bbox) for ax in self._ax_list] + return max(vl) + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8851 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8851&view=rev Author: leejjoon Date: 2010年12月29日 08:29:11 +0000 (2010年12月29日) Log Message: ----------- pdf backend support affine-transformed image Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2010年12月29日 05:21:56 UTC (rev 8850) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2010年12月29日 08:29:11 UTC (rev 8851) @@ -1386,15 +1386,42 @@ def get_image_magnification(self): return self.image_dpi/72.0 - def draw_image(self, gc, x, y, im): + def option_scale_image(self): + """ + pdf backend support arbitrary scaling of image. + """ + return True + + def draw_image(self, gc, x, y, im, dx=None, dy=None, transform=None): self.check_gc(gc) h, w = im.get_size_out() - h, w = 72.0*h/self.image_dpi, 72.0*w/self.image_dpi + + if dx is None: + w = 72.0*w/self.image_dpi + else: + w = dx + + if dy is None: + h = 72.0*h/self.image_dpi + else: + h = dy + imob = self.file.imageObject(im) - self.file.output(Op.gsave, w, 0, 0, h, x, y, Op.concat_matrix, - imob, Op.use_xobject, Op.grestore) + if transform is None: + self.file.output(Op.gsave, + w, 0, 0, h, x, y, Op.concat_matrix, + imob, Op.use_xobject, Op.grestore) + else: + tr1, tr2, tr3, tr4, tr5, tr6 = transform.to_values() + + self.file.output(Op.gsave, + tr1, tr2, tr3, tr4, tr5, tr6, Op.concat_matrix, + w, 0, 0, h, x, y, Op.concat_matrix, + imob, Op.use_xobject, Op.grestore) + + def draw_path(self, gc, path, transform, rgbFace=None): self.check_gc(gc, rgbFace) self.file.writePath( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8850 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8850&view=rev Author: leejjoon Date: 2010年12月29日 05:21:56 +0000 (2010年12月29日) Log Message: ----------- implement axes_divider.HBox and VBox Modified Paths: -------------- trunk/matplotlib/CHANGELOG trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_divider.py trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_grid.py trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_size.py Added Paths: ----------- trunk/matplotlib/examples/axes_grid/demo_axes_hbox_divider.py Modified: trunk/matplotlib/CHANGELOG =================================================================== --- trunk/matplotlib/CHANGELOG 2010年12月29日 03:01:10 UTC (rev 8849) +++ trunk/matplotlib/CHANGELOG 2010年12月29日 05:21:56 UTC (rev 8850) @@ -1,3 +1,5 @@ +2010年12月29日 Implment axes_divider.HBox and VBox. -JJL + 2010年11月22日 Fixed error with Hammer projection. - BVR 2010年11月12日 Fixed the placement and angle of axis labels in 3D plots. - BVR Added: trunk/matplotlib/examples/axes_grid/demo_axes_hbox_divider.py =================================================================== --- trunk/matplotlib/examples/axes_grid/demo_axes_hbox_divider.py (rev 0) +++ trunk/matplotlib/examples/axes_grid/demo_axes_hbox_divider.py 2010年12月29日 05:21:56 UTC (rev 8850) @@ -0,0 +1,48 @@ +import numpy as np +import matplotlib.pyplot as plt +from mpl_toolkits.axes_grid1.axes_divider import HBoxDivider +import mpl_toolkits.axes_grid1.axes_size as Size + +def make_heights_equal(fig, ax1, ax2, pad): + # pad in inches + + h1, v1 = Size.AxesX(ax1), Size.AxesY(ax1) + h2, v2 = Size.AxesX(ax2), Size.AxesY(ax2) + + pad_v = Size.Scaled(1) + pad_h = Size.Fixed(pad) + + my_divider = HBoxDivider(fig, 111, + horizontal=[h1, pad_h, h2], + vertical=[v1, pad_v, v2]) + + + ax1.set_axes_locator(my_divider.new_locator(0)) + ax2.set_axes_locator(my_divider.new_locator(2)) + + +if __name__ == "__main__": + + fig1 = plt.figure() + + arr1 = np.arange(20).reshape((4,5)) + arr2 = np.arange(20).reshape((5,4)) + + ax1 = plt.subplot(121) + ax2 = plt.subplot(122) + + ax1.imshow(arr1, interpolation="nearest") + ax2.imshow(arr2, interpolation="nearest") + + make_heights_equal(fig1, ax1, ax2, pad=0.5) + + for ax in [ax1, ax2]: + ax.locator_params(nbins=4) + + # annotate + ax3 = plt.axes([0.5, 0.5, 0.001, 0.001], frameon=False) + ax3.xaxis.set_visible(False) + ax3.yaxis.set_visible(False) + ax3.annotate("Location of two axes are adjusted\n so that they have an equal height\n while maintaining their aspect ratios", (0.5, 0.5), + xycoords="axes fraction", va="center", ha="center", + bbox=dict(fc="w")) Modified: trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_divider.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_divider.py 2010年12月29日 03:01:10 UTC (rev 8849) +++ trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_divider.py 2010年12月29日 05:21:56 UTC (rev 8850) @@ -59,15 +59,30 @@ self._aspect = aspect self._xrefindex = 0 self._yrefindex = 0 + self._locator = None + def get_horizontal_sizes(self, renderer): + return [s.get_size(renderer) for s in self.get_horizontal()] + def get_vertical_sizes(self, renderer): + return [s.get_size(renderer) for s in self.get_vertical()] + + def get_vsize_hsize(self): + + from axes_size import AddList + + vsize = AddList(self.get_vertical()) + hsize = AddList(self.get_horizontal()) + + return vsize, hsize + + @staticmethod - def _calc_k(l, total_size, renderer): + def _calc_k(l, total_size): rs_sum, as_sum = 0., 0. - for s in l: - _rs, _as = s.get_size(renderer) + for _rs, _as in l: rs_sum += _rs as_sum += _as @@ -79,12 +94,13 @@ @staticmethod - def _calc_offsets(l, k, renderer): + def _calc_offsets(l, k): offsets = [0.] - for s in l: - _rs, _as = s.get_size(renderer) + #for s in l: + for _rs, _as in l: + #_rs, _as = s.get_size(renderer) offsets.append(offsets[-1] + _rs*k + _as) return offsets @@ -168,8 +184,19 @@ "return aspect" return self._aspect + def set_locator(self, _locator): + self._locator = _locator - def locate(self, nx, ny, nx1=None, ny1=None, renderer=None): + def get_locator(self): + return self._locator + + def get_position_runtime(self, ax, renderer): + if self._locator is None: + return self.get_position() + else: + return self._locator(ax, renderer).bounds + + def locate(self, nx, ny, nx1=None, ny1=None, axes=None, renderer=None): """ :param nx, nx1: Integers specifying the column-position of the @@ -182,15 +209,17 @@ figW,figH = self._fig.get_size_inches() - x, y, w, h = self.get_position() + x, y, w, h = self.get_position_runtime(axes, renderer) - k_h = self._calc_k(self._horizontal, figW*w, renderer) - k_v = self._calc_k(self._vertical, figH*h, renderer) + hsizes = self.get_horizontal_sizes(renderer) + vsizes = self.get_vertical_sizes(renderer) + k_h = self._calc_k(hsizes, figW*w) + k_v = self._calc_k(vsizes, figH*h) if self.get_aspect(): k = min(k_h, k_v) - ox = self._calc_offsets(self._horizontal, k, renderer) - oy = self._calc_offsets(self._vertical, k, renderer) + ox = self._calc_offsets(hsizes, k) + oy = self._calc_offsets(vsizes, k) ww = (ox[-1] - ox[0])/figW hh = (oy[-1] - oy[0])/figH @@ -200,8 +229,8 @@ x0, y0 = pb1_anchored.x0, pb1_anchored.y0 else: - ox = self._calc_offsets(self._horizontal, k_h, renderer) - oy = self._calc_offsets(self._vertical, k_v, renderer) + ox = self._calc_offsets(hsizes, k_h) + oy = self._calc_offsets(vsizes, k_v) x0, y0 = x, y @@ -274,6 +303,7 @@ self._ny + _yrefindex, self._nx1 + _xrefindex, self._ny1 + _yrefindex, + axes, renderer) @@ -378,13 +408,20 @@ Divider based on the pre-existing axes. """ - def __init__(self, axes): + def __init__(self, axes, xref=None, yref=None): """ :param axes: axes """ self._axes = axes - self._xref = Size.AxesX(axes) - self._yref = Size.AxesY(axes) + if xref==None: + self._xref = Size.AxesX(axes) + else: + self._xref = xref + if yref==None: + self._yref = Size.AxesY(axes) + else: + self._yref = yref + Divider.__init__(self, fig=axes.get_figure(), pos=None, horizontal=[self._xref], vertical=[self._yref], aspect=None, anchor="C") @@ -553,203 +590,255 @@ -class LocatableAxesBase: - def __init__(self, *kl, **kw): - self._axes_class.__init__(self, *kl, **kw) - self._locator = None - self._locator_renderer = None - def set_axes_locator(self, locator): - self._locator = locator +class HBoxDivider(SubplotDivider): - def get_axes_locator(self): - return self._locator - def apply_aspect(self, position=None): + def __init__(self, fig, *args, **kwargs): + SubplotDivider.__init__(self, fig, *args, **kwargs) - if self.get_axes_locator() is None: - self._axes_class.apply_aspect(self, position) - else: - pos = self.get_axes_locator()(self, self._locator_renderer) - self._axes_class.apply_aspect(self, position=pos) + @staticmethod + def _determine_karray(equivalent_sizes, appended_sizes, + max_equivalent_size, + total_appended_size): - def draw(self, renderer=None, inframe=False): - self._locator_renderer = renderer + n = len(equivalent_sizes) + import numpy as np + A = np.mat(np.zeros((n+1, n+1), dtype="d")) + B = np.zeros((n+1), dtype="d") + # AxK = B - self._axes_class.draw(self, renderer, inframe) + # populated A + for i, (r, a) in enumerate(equivalent_sizes): + A[i,i] = r + A[i,-1] = -1 + B[i] = -a + A[-1,:-1] = [r for r, a in appended_sizes] + B[-1] = total_appended_size - sum([a for rs, a in appended_sizes]) + karray_H = (A.I*np.mat(B).T).A1 + karray = karray_H[:-1] + H = karray_H[-1] + if H > max_equivalent_size: + karray = (max_equivalent_size - \ + np.array([a for r, a in equivalent_sizes])) \ + / np.array([r for r, a in equivalent_sizes]) + return karray -_locatableaxes_classes = {} -def locatable_axes_factory(axes_class): - new_class = _locatableaxes_classes.get(axes_class) - if new_class is None: - new_class = new.classobj("Locatable%s" % (axes_class.__name__), - (LocatableAxesBase, axes_class), - {'_axes_class': axes_class}) - _locatableaxes_classes[axes_class] = new_class + @staticmethod + def _calc_offsets(appended_sizes, karray): + offsets = [0.] - return new_class + #for s in l: + for (r, a), k in zip(appended_sizes, karray): + offsets.append(offsets[-1] + r*k + a) -#if hasattr(maxes.Axes, "get_axes_locator"): -# LocatableAxes = maxes.Axes -#else: + return offsets -def make_axes_locatable(axes): - if not hasattr(axes, "set_axes_locator"): - new_class = locatable_axes_factory(type(axes)) - axes.__class__ = new_class - divider = AxesDivider(axes) - locator = divider.new_locator(nx=0, ny=0) - axes.set_axes_locator(locator) + def new_locator(self, nx, nx1=None): + """ + returns a new locator + (:class:`mpl_toolkits.axes_grid.axes_divider.AxesLocator`) for + specified cell. - return divider + :param nx, nx1: Integers specifying the column-position of the + cell. When nx1 is None, a single nx-th column is + specified. Otherwise location of columns spanning between nx + to nx1 (but excluding nx1-th column) is specified. + :param ny, ny1: same as nx and nx1, but for row positions. + """ + return AxesLocator(self, nx, 0, nx1, None) -#from matplotlib.axes import Axes -from mpl_axes import Axes -LocatableAxes = locatable_axes_factory(Axes) + def _locate(self, x, y, w, h, + y_equivalent_sizes, x_appended_sizes, + figW, figH): + """ + :param nx, nx1: Integers specifying the column-position of the + cell. When nx1 is None, a single nx-th column is + specified. Otherwise location of columns spanning between nx + to nx1 (but excluding nx1-th column) is specified. -def get_demo_image(): - # prepare image - delta = 0.5 + :param ny, ny1: same as nx and nx1, but for row positions. + """ - extent = (-3,4,-4,3) - import numpy as np - x = np.arange(-3.0, 4.001, delta) - y = np.arange(-4.0, 3.001, delta) - X, Y = np.meshgrid(x, y) - import matplotlib.mlab as mlab - Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) - Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1) - Z = (Z1 - Z2) * 10 - return Z, extent + equivalent_sizes = y_equivalent_sizes + appended_sizes = x_appended_sizes -def demo_locatable_axes(): - import matplotlib.pyplot as plt + max_equivalent_size = figH*h + total_appended_size = figW*w + karray = self._determine_karray(equivalent_sizes, appended_sizes, + max_equivalent_size, + total_appended_size) - fig1 = plt.figure(1, (6, 6)) - fig1.clf() + ox = self._calc_offsets(appended_sizes, karray) - ## PLOT 1 - # simple image & colorbar - ax = fig1.add_subplot(2, 2, 1) + ww = (ox[-1] - ox[0])/figW + ref_h = equivalent_sizes[0] + hh = (karray[0]*ref_h[0] + ref_h[1])/figH + pb = mtransforms.Bbox.from_bounds(x, y, w, h) + pb1 = mtransforms.Bbox.from_bounds(x, y, ww, hh) + pb1_anchored = pb1.anchored(self.get_anchor(), pb) + x0, y0 = pb1_anchored.x0, pb1_anchored.y0 - Z, extent = get_demo_image() + return x0, y0, ox, hh - im = ax.imshow(Z, extent=extent, interpolation="nearest") - cb = plt.colorbar(im) - plt.setp(cb.ax.get_yticklabels(), visible=False) + def locate(self, nx, ny, nx1=None, ny1=None, axes=None, renderer=None): + """ + :param nx, nx1: Integers specifying the column-position of the + cell. When nx1 is None, a single nx-th column is + specified. Otherwise location of columns spanning between nx + to nx1 (but excluding nx1-th column) is specified. - ## PLOT 2 - # image and colorbar whose location is adjusted in the drawing time. - # a hard way + :param ny, ny1: same as nx and nx1, but for row positions. + """ - divider = SubplotDivider(fig1, 2, 2, 2, aspect=True) - # axes for image - ax = LocatableAxes(fig1, divider.get_position()) + figW,figH = self._fig.get_size_inches() + x, y, w, h = self.get_position_runtime(axes, renderer) - # axes for coloarbar - ax_cb = LocatableAxes(fig1, divider.get_position()) + y_equivalent_sizes = self.get_vertical_sizes(renderer) + x_appended_sizes = self.get_horizontal_sizes(renderer) + x0, y0, ox, hh = self._locate(x, y, w, h, + y_equivalent_sizes, x_appended_sizes, + figW, figH) + if nx1 is None: + nx1=nx+1 - h = [Size.AxesX(ax), # main axes - Size.Fixed(0.05), # padding, 0.1 inch - Size.Fixed(0.2), # colorbar, 0.3 inch - ] + x1, w1 = x0 + ox[nx]/figW, (ox[nx1] - ox[nx])/figW + y1, h1 = y0, hh - v = [Size.AxesY(ax)] + return mtransforms.Bbox.from_bounds(x1, y1, w1, h1) - divider.set_horizontal(h) - divider.set_vertical(v) - ax.set_axes_locator(divider.new_locator(nx=0, ny=0)) - ax_cb.set_axes_locator(divider.new_locator(nx=2, ny=0)) - fig1.add_axes(ax) - fig1.add_axes(ax_cb) +class VBoxDivider(HBoxDivider): + """ + The Divider class whose rectangle area is specified as a subplot grometry. + """ - ax_cb.yaxis.set_ticks_position("right") - Z, extent = get_demo_image() + def new_locator(self, ny, ny1=None): + """ + returns a new locator + (:class:`mpl_toolkits.axes_grid.axes_divider.AxesLocator`) for + specified cell. - im = ax.imshow(Z, extent=extent, interpolation="nearest") - plt.colorbar(im, cax=ax_cb) - plt.setp(ax_cb.get_yticklabels(), visible=False) + :param nx, nx1: Integers specifying the column-position of the + cell. When nx1 is None, a single nx-th column is + specified. Otherwise location of columns spanning between nx + to nx1 (but excluding nx1-th column) is specified. - plt.draw() - #plt.colorbar(im, cax=ax_cb) + :param ny, ny1: same as nx and nx1, but for row positions. + """ + return AxesLocator(self, 0, ny, None, ny1) - ## PLOT 3 - # image and colorbar whose location is adjusted in the drawing time. - # a easy way + def locate(self, nx, ny, nx1=None, ny1=None, axes=None, renderer=None): + """ - ax = fig1.add_subplot(2, 2, 3) - divider = make_axes_locatable(ax) + :param nx, nx1: Integers specifying the column-position of the + cell. When nx1 is None, a single nx-th column is + specified. Otherwise location of columns spanning between nx + to nx1 (but excluding nx1-th column) is specified. - ax_cb = divider.new_horizontal(size="5%", pad=0.05) - fig1.add_axes(ax_cb) + :param ny, ny1: same as nx and nx1, but for row positions. + """ - im = ax.imshow(Z, extent=extent, interpolation="nearest") - plt.colorbar(im, cax=ax_cb) - plt.setp(ax_cb.get_yticklabels(), visible=False) + figW,figH = self._fig.get_size_inches() + x, y, w, h = self.get_position_runtime(axes, renderer) - ## PLOT 4 - # two images side by sied with fixed padding. + x_equivalent_sizes = self.get_horizontal_sizes(renderer) + y_appended_sizes = self.get_vertical_sizes(renderer) - ax = fig1.add_subplot(2, 2, 4) - divider = make_axes_locatable(ax) + y0, x0, oy, ww = self._locate(y, x, h, w, + x_equivalent_sizes, y_appended_sizes, + figH, figW) + if ny1 is None: + ny1=ny+1 - ax2 = divider.new_horizontal(size="100%", pad=0.05) - fig1.add_axes(ax2) + x1, w1 = x0, ww + y1, h1 = y0 + oy[ny]/figH, (oy[ny1] - oy[ny])/figH - ax.imshow(Z, extent=extent, interpolation="nearest") - ax2.imshow(Z, extent=extent, interpolation="nearest") - plt.setp(ax2.get_yticklabels(), visible=False) - plt.draw() - plt.show() + return mtransforms.Bbox.from_bounds(x1, y1, w1, h1) -def demo_fixed_size_axes(): - import matplotlib.pyplot as plt - fig2 = plt.figure(2, (6, 6)) - # The first items are for padding and the second items are for the axes. - # sizes are in inch. - h = [Size.Fixed(1.0), Size.Fixed(4.5)] - v = [Size.Fixed(0.7), Size.Fixed(5.)] - divider = Divider(fig2, (0.0, 0.0, 1., 1.), h, v, aspect=False) - # the width and height of the rectangle is ignored. +class LocatableAxesBase: + def __init__(self, *kl, **kw): - ax = LocatableAxes(fig2, divider.get_position()) - ax.set_axes_locator(divider.new_locator(nx=1, ny=1)) + self._axes_class.__init__(self, *kl, **kw) - fig2.add_axes(ax) + self._locator = None + self._locator_renderer = None - ax.plot([1,2,3]) + def set_axes_locator(self, locator): + self._locator = locator - plt.draw() - plt.show() - #plt.colorbar(im, cax=ax_cb) + def get_axes_locator(self): + return self._locator + def apply_aspect(self, position=None): + if self.get_axes_locator() is None: + self._axes_class.apply_aspect(self, position) + else: + pos = self.get_axes_locator()(self, self._locator_renderer) + self._axes_class.apply_aspect(self, position=pos) + def draw(self, renderer=None, inframe=False): -if __name__ == "__main__": - demo_locatable_axes() - demo_fixed_size_axes() + self._locator_renderer = renderer + + self._axes_class.draw(self, renderer, inframe) + + + +_locatableaxes_classes = {} +def locatable_axes_factory(axes_class): + + new_class = _locatableaxes_classes.get(axes_class) + if new_class is None: + new_class = new.classobj("Locatable%s" % (axes_class.__name__), + (LocatableAxesBase, axes_class), + {'_axes_class': axes_class}) + _locatableaxes_classes[axes_class] = new_class + + return new_class + +#if hasattr(maxes.Axes, "get_axes_locator"): +# LocatableAxes = maxes.Axes +#else: + +def make_axes_locatable(axes): + if not hasattr(axes, "set_axes_locator"): + new_class = locatable_axes_factory(type(axes)) + axes.__class__ = new_class + + divider = AxesDivider(axes) + locator = divider.new_locator(nx=0, ny=0) + axes.set_axes_locator(locator) + + return divider + + +#from matplotlib.axes import Axes +from mpl_axes import Axes +LocatableAxes = locatable_axes_factory(Axes) + + Modified: trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_grid.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_grid.py 2010年12月29日 03:01:10 UTC (rev 8849) +++ trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_grid.py 2010年12月29日 05:21:56 UTC (rev 8850) @@ -413,7 +413,25 @@ ax = self.axes_llc _tick_only(ax, bottom_on=False, left_on=False) + def set_axes_locator(self, locator): + self._divider.set_locator(locator) + def get_axes_locator(self): + return self._divider.get_locator() + + def get_vsize_hsize(self): + + return self._divider.get_vsize_hsize() +# from axes_size import AddList + +# vsize = AddList(self._divider.get_vertical()) +# hsize = AddList(self._divider.get_horizontal()) + +# return vsize, hsize + + + + class ImageGrid(Grid): """ A class that creates a grid of Axes. In matplotlib, the axes Modified: trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_size.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_size.py 2010年12月29日 03:01:10 UTC (rev 8849) +++ trunk/matplotlib/lib/mpl_toolkits/axes_grid1/axes_size.py 2010年12月29日 05:21:56 UTC (rev 8850) @@ -16,8 +16,40 @@ class _Base(object): "Base class" - pass + def __rmul__(self, other): + float(other) # just to check if number if given + return Fraction(other, self) + + def __add__(self, other): + if isinstance(other, _Base): + return Add(self, other) + else: + float(other) + other = Fixed(other) + return Add(self, other) + + +class Add(_Base): + def __init__(self, a, b): + self._a = a + self._b = b + + def get_size(self, renderer): + a_rel_size, a_abs_size = self._a.get_size(renderer) + b_rel_size, b_abs_size = self._b.get_size(renderer) + return a_rel_size + b_rel_size, a_abs_size + b_abs_size + +class AddList(_Base): + def __init__(self, add_list): + self._list = add_list + + def get_size(self, renderer): + sum_rel_size = sum([a.get_size(renderer)[0] for a in self._list]) + sum_abs_size = sum([a.get_size(renderer)[1] for a in self._list]) + return sum_rel_size, sum_abs_size + + class Fixed(_Base): "Simple fixed size with absolute part = *fixed_size* and relative part = 0" def __init__(self, fixed_size): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8849 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8849&view=rev Author: leejjoon Date: 2010年12月29日 03:01:10 +0000 (2010年12月29日) Log Message: ----------- make RendererAgg.draw_path_collection as a wrapper function Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_agg.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_agg.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_agg.py 2010年12月29日 03:00:36 UTC (rev 8848) +++ trunk/matplotlib/lib/matplotlib/backends/backend_agg.py 2010年12月29日 03:01:10 UTC (rev 8849) @@ -75,15 +75,18 @@ else: return LOAD_NO_HINTING + # for filtering to work with rasterization, methods needs to be wrapped. + # maybe there is better way to do it. def draw_markers(self, *kl, **kw): - # for filtering to work with rastrization, methods needs to be wrapped. - # maybe there is better way to do it. return self._renderer.draw_markers(*kl, **kw) + def draw_path_collection(self, *kl, **kw): + return self._renderer.draw_path_collection(*kl, **kw) + def _update_methods(self): #self.draw_path = self._renderer.draw_path # see below #self.draw_markers = self._renderer.draw_markers - self.draw_path_collection = self._renderer.draw_path_collection + #self.draw_path_collection = self._renderer.draw_path_collection self.draw_quad_mesh = self._renderer.draw_quad_mesh self.draw_gouraud_triangle = self._renderer.draw_gouraud_triangle self.draw_gouraud_triangles = self._renderer.draw_gouraud_triangles @@ -326,6 +329,10 @@ post_processing is plotted (using draw_image) on it. """ + # WARNING. + # For agg_filter to work, the rendere's method need + # to overridden in the class. See draw_markers, and draw_path_collections + from matplotlib._image import fromarray width, height = int(self.width), int(self.height) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8848 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8848&view=rev Author: leejjoon Date: 2010年12月29日 03:00:36 +0000 (2010年12月29日) Log Message: ----------- fix Text.get_font_properties Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/text.py Modified: trunk/matplotlib/lib/matplotlib/text.py =================================================================== --- trunk/matplotlib/lib/matplotlib/text.py 2010年12月29日 02:54:58 UTC (rev 8847) +++ trunk/matplotlib/lib/matplotlib/text.py 2010年12月29日 03:00:36 UTC (rev 8848) @@ -603,7 +603,7 @@ def get_font_properties(self): 'alias for get_fontproperties' - return self.get_fontproperties + return self.get_fontproperties() def get_family(self): "Return the list of font families used for font lookup" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8847 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8847&view=rev Author: leejjoon Date: 2010年12月29日 02:54:58 +0000 (2010年12月29日) Log Message: ----------- Merged revisions 8844-8846 via svnmerge from https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/branches/v1_0_maint ........ r8844 | mdboom | 2010年12月22日 01:08:28 +0900 (2010年12月22日) | 2 lines [3138764] Small speed fix (submitted by notmuchtotell) ........ r8845 | mdboom | 2010年12月22日 01:28:00 +0900 (2010年12月22日) | 2 lines [3053296] backend_qt4 Toolbar2QT string format fix ........ r8846 | leejjoon | 2010年12月29日 11:43:08 +0900 (2010年12月29日) | 1 line revocer the negative coordinates support of annotation ........ Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/__init__.py trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py trunk/matplotlib/lib/matplotlib/text.py Property Changed: ---------------- trunk/matplotlib/ trunk/matplotlib/doc/pyplots/README trunk/matplotlib/doc/sphinxext/gen_gallery.py trunk/matplotlib/doc/sphinxext/gen_rst.py trunk/matplotlib/examples/misc/multiprocess.py trunk/matplotlib/examples/mplot3d/contour3d_demo.py trunk/matplotlib/examples/mplot3d/contourf3d_demo.py trunk/matplotlib/examples/mplot3d/polys3d_demo.py trunk/matplotlib/examples/mplot3d/scatter3d_demo.py trunk/matplotlib/examples/mplot3d/surface3d_demo.py trunk/matplotlib/examples/mplot3d/wire3d_demo.py trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_spines/spines_axes_positions.png Property changes on: trunk/matplotlib ___________________________________________________________________ Modified: svnmerge-integrated - /branches/mathtex:1-7263 /branches/v0_91_maint:1-6428 /branches/v0_98_5_maint:1-7253 /branches/v1_0_maint:1-8842 /trunk/matplotlib:1-7315 + /trunk/matplotlib:1-7315 /branches/mathtex:1-7263 /branches/v0_91_maint:1-6428 /branches/v0_98_5_maint:1-7253 /branches/v1_0_maint:1-8846 Modified: svn:mergeinfo - /branches/v0_91_maint:5753-5771 /branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint:5753-5771 /branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/doc/pyplots/README ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint/doc/pyplots/README:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/doc/pyplots/README:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint/doc/pyplots/README:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/doc/pyplots/README:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/doc/sphinxext/gen_gallery.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint/doc/sphinxext/gen_gallery.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/doc/sphinxext/gen_gallery.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint/doc/sphinxext/gen_gallery.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/doc/sphinxext/gen_gallery.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/doc/sphinxext/gen_rst.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint/doc/sphinxext/gen_rst.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/doc/sphinxext/gen_rst.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint/doc/sphinxext/gen_rst.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/doc/sphinxext/gen_rst.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/examples/misc/multiprocess.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/examples/misc/log.py:5753-5771 /branches/v0_98_5_maint/examples/misc/log.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/misc/multiprocess.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/misc/multiprocess.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint/examples/misc/log.py:5753-5771 /branches/v0_98_5_maint/examples/misc/log.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/misc/multiprocess.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/misc/multiprocess.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/examples/mplot3d/contour3d_demo.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/examples/mplot3d/contour.py:5753-5771 /branches/v0_98_5_maint/examples/mplot3d/contour.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/mplot3d/contour3d_demo.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/mplot3d/contour3d_demo.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint/examples/mplot3d/contour.py:5753-5771 /branches/v0_98_5_maint/examples/mplot3d/contour.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/mplot3d/contour3d_demo.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/mplot3d/contour3d_demo.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/examples/mplot3d/contourf3d_demo.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/examples/mplot3d/contourf.py:5753-5771 /branches/v0_98_5_maint/examples/mplot3d/contourf.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/mplot3d/contourf3d_demo.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/mplot3d/contourf3d_demo.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint/examples/mplot3d/contourf.py:5753-5771 /branches/v0_98_5_maint/examples/mplot3d/contourf.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/mplot3d/contourf3d_demo.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/mplot3d/contourf3d_demo.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/examples/mplot3d/polys3d_demo.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/examples/mplot3d/polys.py:5753-5771 /branches/v0_98_5_maint/examples/mplot3d/polys.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/mplot3d/polys3d_demo.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/mplot3d/polys3d_demo.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint/examples/mplot3d/polys.py:5753-5771 /branches/v0_98_5_maint/examples/mplot3d/polys.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/mplot3d/polys3d_demo.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/mplot3d/polys3d_demo.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/examples/mplot3d/scatter3d_demo.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/examples/mplot3d/scatter.py:5753-5771 /branches/v0_98_5_maint/examples/mplot3d/scatter.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/mplot3d/scatter3d_demo.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/mplot3d/scatter3d_demo.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint/examples/mplot3d/scatter.py:5753-5771 /branches/v0_98_5_maint/examples/mplot3d/scatter.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/mplot3d/scatter3d_demo.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/mplot3d/scatter3d_demo.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/examples/mplot3d/surface3d_demo.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/examples/mplot3d/surface.py:5753-5771 /branches/v0_98_5_maint/examples/mplot3d/surface.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/mplot3d/surface3d_demo.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/mplot3d/surface3d_demo.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint/examples/mplot3d/surface.py:5753-5771 /branches/v0_98_5_maint/examples/mplot3d/surface.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/mplot3d/surface3d_demo.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/mplot3d/surface3d_demo.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/examples/mplot3d/wire3d_demo.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/examples/mplot3d/wire.py:5753-5771 /branches/v0_98_5_maint/examples/mplot3d/wire.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/mplot3d/wire3d_demo.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/mplot3d/wire3d_demo.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint/examples/mplot3d/wire.py:5753-5771 /branches/v0_98_5_maint/examples/mplot3d/wire.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080 /branches/v0_99_maint/examples/mplot3d/wire3d_demo.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/examples/mplot3d/wire3d_demo.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Modified: trunk/matplotlib/lib/matplotlib/__init__.py =================================================================== --- trunk/matplotlib/lib/matplotlib/__init__.py 2010年12月29日 02:43:08 UTC (rev 8846) +++ trunk/matplotlib/lib/matplotlib/__init__.py 2010年12月29日 02:54:58 UTC (rev 8847) @@ -639,7 +639,7 @@ def __setitem__(self, key, val): try: - if key in _deprecated_map.keys(): + if key in _deprecated_map: alt = _deprecated_map[key] warnings.warn(self.msg_depr % (key, alt)) key = alt @@ -654,7 +654,7 @@ See rcParams.keys() for a list of valid parameters.' % (key,)) def __getitem__(self, key): - if key in _deprecated_map.keys(): + if key in _deprecated_map: alt = _deprecated_map[key] warnings.warn(self.msg_depr % (key, alt)) key = alt Modified: trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py 2010年12月29日 02:43:08 UTC (rev 8846) +++ trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py 2010年12月29日 02:54:58 UTC (rev 8847) @@ -187,7 +187,7 @@ y = self.figure.bbox.height - event.y() # from QWheelEvent::delta doc steps = event.delta()/120 - if (event.orientation() == Qt.Qt.Vertical): + if (event.orientation() == QtCore.Qt.Vertical): FigureCanvasBase.scroll_event( self, x, y, steps) if DEBUG: print 'scroll event : delta = %i, steps = %i ' % (event.delta(),steps) @@ -455,7 +455,7 @@ text += ": "+ylabel text += " (%s)" elif ylabel: - text = "%s (%s)" % ylabel + text = "%%s (%s)" % ylabel else: text = "%s" titles.append(text % repr(axes)) Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint/lib/matplotlib/sphinxext/mathmpl.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/lib/matplotlib/sphinxext/mathmpl.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint/lib/matplotlib/sphinxext/mathmpl.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/lib/matplotlib/sphinxext/mathmpl.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint/lib/matplotlib/sphinxext/only_directives.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/lib/matplotlib/sphinxext/only_directives.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint/lib/matplotlib/sphinxext/only_directives.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/lib/matplotlib/sphinxext/only_directives.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint/lib/matplotlib/sphinxext/plot_directive.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/lib/matplotlib/sphinxext/plot_directive.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245 /branches/v0_99_maint/lib/matplotlib/sphinxext/plot_directive.py:7323-7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584,7616-7618,7633,7638,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/lib/matplotlib/sphinxext/plot_directive.py:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Property changes on: trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_spines/spines_axes_positions.png ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_99_maint/lib/matplotlib/tests/baseline_images/test_spines/spines_axes_positions.png:7323-7337,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/lib/matplotlib/tests/baseline_images/test_spines/spines_axes_positions.png:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842 + /branches/v0_99_maint/lib/matplotlib/tests/baseline_images/test_spines/spines_axes_positions.png:7323-7337,7703,7727-7734,7740-7741,7745,7751,7756,7762,7770,7772,7774,7776-7778,7780,7784,7788,7790,7792,7794,7796,7800,7803,7808,7822,7827,7834,7837,7844,7846-7847,7849,7858,7864,7866-7867,7874,7884,7896,7901-7903,7916,7919,7924,7928,7944,7952,7970,7972,7981,7983,7989-7991,7998,8001,8003,8016-8057,8068,8070,8092-8116,8121-8135 /branches/v1_0_maint/lib/matplotlib/tests/baseline_images/test_spines/spines_axes_positions.png:8521,8524-8541,8543,8549,8554,8557,8559-8564,8566,8573,8575,8577,8579,8581,8583,8585,8588,8590,8593,8595,8601,8603,8610,8614,8627-8628,8630,8632,8643,8645,8647-8667,8673,8675,8677,8679,8690-8697,8704,8706,8708,8714-8715,8717-8720,8722-8725,8732-8734,8747,8764,8769-8770,8772,8774,8776,8778,8780,8785,8788,8790,8794,8798-8799,8808,8815,8830,8835,8841-8842,8844-8846 Modified: trunk/matplotlib/lib/matplotlib/text.py =================================================================== --- trunk/matplotlib/lib/matplotlib/text.py 2010年12月29日 02:43:08 UTC (rev 8846) +++ trunk/matplotlib/lib/matplotlib/text.py 2010年12月29日 02:54:58 UTC (rev 8847) @@ -1443,6 +1443,9 @@ y = float(self.convert_yunits(y)) + if s in ['axes points', 'axes pixel', 'figure points', 'figure pixel']: + return self._get_xy_legacy(renderer, x, y, s) + tr = self._get_xy_transform(renderer, s) x1, y1 = tr.transform_point((x, y)) return x1, y1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8846 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8846&view=rev Author: leejjoon Date: 2010年12月29日 02:43:08 +0000 (2010年12月29日) Log Message: ----------- revocer the negative coordinates support of annotation Modified Paths: -------------- branches/v1_0_maint/lib/matplotlib/text.py Modified: branches/v1_0_maint/lib/matplotlib/text.py =================================================================== --- branches/v1_0_maint/lib/matplotlib/text.py 2010年12月21日 16:28:00 UTC (rev 8845) +++ branches/v1_0_maint/lib/matplotlib/text.py 2010年12月29日 02:43:08 UTC (rev 8846) @@ -1443,6 +1443,9 @@ y = float(self.convert_yunits(y)) + if s in ['axes points', 'axes pixel', 'figure points', 'figure pixel']: + return self._get_xy_legacy(renderer, x, y, s) + tr = self._get_xy_transform(renderer, s) x1, y1 = tr.transform_point((x, y)) return x1, y1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8845 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8845&view=rev Author: mdboom Date: 2010年12月21日 16:28:00 +0000 (2010年12月21日) Log Message: ----------- [3053296] backend_qt4 Toolbar2QT string format fix Modified Paths: -------------- branches/v1_0_maint/lib/matplotlib/backends/backend_qt4.py Modified: branches/v1_0_maint/lib/matplotlib/backends/backend_qt4.py =================================================================== --- branches/v1_0_maint/lib/matplotlib/backends/backend_qt4.py 2010年12月21日 16:08:28 UTC (rev 8844) +++ branches/v1_0_maint/lib/matplotlib/backends/backend_qt4.py 2010年12月21日 16:28:00 UTC (rev 8845) @@ -182,7 +182,7 @@ y = self.figure.bbox.height - event.y() # from QWheelEvent::delta doc steps = event.delta()/120 - if (event.orientation() == Qt.Qt.Vertical): + if (event.orientation() == QtCore.Qt.Vertical): FigureCanvasBase.scroll_event( self, x, y, steps) if DEBUG: print 'scroll event : delta = %i, steps = %i ' % (event.delta(),steps) @@ -450,7 +450,7 @@ text += ": "+ylabel text += " (%s)" elif ylabel: - text = "%s (%s)" % ylabel + text = "%%s (%s)" % ylabel else: text = "%s" titles.append(text % repr(axes)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8844 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8844&view=rev Author: mdboom Date: 2010年12月21日 16:08:28 +0000 (2010年12月21日) Log Message: ----------- [3138764] Small speed fix (submitted by notmuchtotell) Modified Paths: -------------- branches/v1_0_maint/lib/matplotlib/__init__.py Modified: branches/v1_0_maint/lib/matplotlib/__init__.py =================================================================== --- branches/v1_0_maint/lib/matplotlib/__init__.py 2010年12月17日 18:27:11 UTC (rev 8843) +++ branches/v1_0_maint/lib/matplotlib/__init__.py 2010年12月21日 16:08:28 UTC (rev 8844) @@ -637,7 +637,7 @@ def __setitem__(self, key, val): try: - if key in _deprecated_map.keys(): + if key in _deprecated_map: alt = _deprecated_map[key] warnings.warn(self.msg_depr % (key, alt)) key = alt @@ -652,7 +652,7 @@ See rcParams.keys() for a list of valid parameters.' % (key,)) def __getitem__(self, key): - if key in _deprecated_map.keys(): + if key in _deprecated_map: alt = _deprecated_map[key] warnings.warn(self.msg_depr % (key, alt)) key = alt This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.