SourceForge logo
SourceForge logo
Menu

matplotlib-checkins — Commit notification. DO NOT POST to this list, just subscribe to it.

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
(6)
2
(1)
3
(6)
4
5
(1)
6
7
(4)
8
(2)
9
(1)
10
(5)
11
(4)
12
(2)
13
(7)
14
15
(2)
16
(2)
17
(1)
18
(3)
19
20
(1)
21
(8)
22
(3)
23
24
25
26
27
(1)
28
(2)
29
30
31
(4)


Showing results of 66

1 2 3 > >> (Page 1 of 3)
From: <md...@us...> - 2009年12月31日 16:46:06
Revision: 8059
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8059&view=rev
Author: mdboom
Date: 2009年12月31日 16:45:59 +0000 (2009年12月31日)
Log Message:
-----------
Add support for mathtext markers (thanks to tcb for original work)
Modified Paths:
--------------
 trunk/matplotlib/CHANGELOG
 trunk/matplotlib/examples/pylab_examples/line_styles.py
 trunk/matplotlib/lib/matplotlib/cbook.py
 trunk/matplotlib/lib/matplotlib/lines.py
 trunk/matplotlib/lib/matplotlib/text.py
 trunk/matplotlib/src/_path.cpp
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG	2009年12月31日 15:48:55 UTC (rev 8058)
+++ trunk/matplotlib/CHANGELOG	2009年12月31日 16:45:59 UTC (rev 8059)
@@ -1,3 +1,6 @@
+2009年12月31日 Add support for using math text as marker symbols (Thanks to tcb)
+ - MGD
+
 2009年12月31日 Commit a workaround for a regression in PyQt4-4.6.{0,1} - DSD
 
 2009年12月22日 Fix cmap data for gist_earth_r, etc. -JJL
@@ -20,7 +23,7 @@
 Added new examples. - JJL
 
 2009年12月01日 Applied Laurent Dufrechou's patch to improve blitting with
- the qt4 backend - DSD 
+ the qt4 backend - DSD
 
 2009年11月13日 The pdf backend now allows changing the contents of
 a pdf file's information dictionary via PdfPages.infodict. - JKS
@@ -153,35 +156,35 @@
 
 2009年08月06日 Tagging the 0.99.0 release at svn r7397 - JDH
 
-	 * fixed an alpha colormapping bug posted on sf 2832575
+ * fixed an alpha colormapping bug posted on sf 2832575
 
-	 * fix typo in axes_divider.py. use nanmin, nanmax in angle_helper.py
+ * fix typo in axes_divider.py. use nanmin, nanmax in angle_helper.py
 (patch by Christoph Gohlke)
 
-	 * remove dup gui event in enter/leave events in gtk
+ * remove dup gui event in enter/leave events in gtk
 
-	 * lots of fixes for os x binaries (Thanks Russell Owen)
+ * lots of fixes for os x binaries (Thanks Russell Owen)
 
-	 * attach gtk events to mpl events -- fixes sf bug 2816580
+ * attach gtk events to mpl events -- fixes sf bug 2816580
 
-	 * applied sf patch 2815064 (middle button events for wx) and
+ * applied sf patch 2815064 (middle button events for wx) and
 patch 2818092 (resize events for wx)
 
-	 * fixed boilerplate.py so it doesn't break the ReST docs.
+ * fixed boilerplate.py so it doesn't break the ReST docs.
 
-	 * removed a couple of cases of mlab.load
+ * removed a couple of cases of mlab.load
 
-	 * fixed rec2csv win32 file handle bug from sf patch 2831018
+ * fixed rec2csv win32 file handle bug from sf patch 2831018
 
-	 * added two examples from Josh Hemann: examples/pylab_examples/barchart_demo2.py
+ * added two examples from Josh Hemann: examples/pylab_examples/barchart_demo2.py
 and examples/pylab_examples/boxplot_demo2.py
 
-	 * handled sf bugs 2831556 and 2830525; better bar error messages and
+ * handled sf bugs 2831556 and 2830525; better bar error messages and
 backend driver configs
 
-	 * added miktex win32 patch from sf patch 2820194
+ * added miktex win32 patch from sf patch 2820194
 
-	 * apply sf patches 2830233 and 2823885 for osx setup and 64 bit; thanks Michiel
+ * apply sf patches 2830233 and 2823885 for osx setup and 64 bit; thanks Michiel
 
 2009年08月04日 Made cbook.get_sample_data make use of the ETag and Last-Modified
 headers of mod_dav_svn. - JKS
Modified: trunk/matplotlib/examples/pylab_examples/line_styles.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/line_styles.py	2009年12月31日 15:48:55 UTC (rev 8058)
+++ trunk/matplotlib/examples/pylab_examples/line_styles.py	2009年12月31日 16:45:59 UTC (rev 8059)
@@ -17,19 +17,28 @@
 except TypeError:
 pass
 
-styles = linestyles + markers
+styles = markers + [
+ r'$\lambda$',
+ r'$\bowtie$',
+ r'$\circlearrowleft$',
+ r'$\clubsuit$',
+ r'$\checkmark$']
 
 colors = ('b', 'g', 'r', 'c', 'm', 'y', 'k')
 
+plt.figure(figsize=(8,8))
 
 axisNum = 0
-for row in range(5):
+for row in range(6):
 for col in range(5):
 axisNum += 1
- ax = plt.subplot(5, 5, axisNum)
- style = styles[axisNum % len(styles) ]
- color = colors[axisNum % len(colors) ]
- plt.plot(t,s, style + color, markersize=10)
+ ax = plt.subplot(6, 5, axisNum)
+ color = colors[axisNum % len(colors)]
+ if axisNum < len(linestyles):
+ plt.plot(t, s, linestyles[axisNum], color=color, markersize=10)
+ else:
+ style = styles[(axisNum - len(linestyles)) % len(styles)]
+ plt.plot(t, s, linestyle='None', marker=style, color=color, markersize=10)
 ax.set_yticklabels([])
 ax.set_xticklabels([])
 
Modified: trunk/matplotlib/lib/matplotlib/cbook.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/cbook.py	2009年12月31日 15:48:55 UTC (rev 8058)
+++ trunk/matplotlib/lib/matplotlib/cbook.py	2009年12月31日 16:45:59 UTC (rev 8059)
@@ -1676,8 +1676,17 @@
 else:
 break
 
+def is_math_text(s):
+ # Did we find an even number of non-escaped dollar signs?
+ # If so, treat is as math text.
+ s = unicode(s)
 
+ dollar_count = s.count(r'$') - s.count(r'\$')
+ even_dollars = (dollar_count > 0 and dollar_count % 2 == 0)
 
+ return even_dollars
+
+
 if __name__=='__main__':
 assert( allequal([1,1,1]) )
 assert(not allequal([1,1,0]) )
Modified: trunk/matplotlib/lib/matplotlib/lines.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/lines.py	2009年12月31日 15:48:55 UTC (rev 8058)
+++ trunk/matplotlib/lib/matplotlib/lines.py	2009年12月31日 16:45:59 UTC (rev 8059)
@@ -12,7 +12,7 @@
 import artist
 from artist import Artist
 from cbook import iterable, is_string_like, is_numlike, ls_mapper, dedent,\
-flatten
+flatten, is_math_text
 from colors import colorConverter
 from path import Path
 from transforms import Affine2D, Bbox, TransformedPath, IdentityTransform
@@ -20,6 +20,7 @@
 from matplotlib import rcParams
 from artist import allow_rasterization
 from matplotlib import docstring
+from matplotlib.font_manager import FontProperties
 
 # special-purpose marker identifiers:
 (TICKLEFT, TICKRIGHT, TICKUP, TICKDOWN,
@@ -139,7 +140,7 @@
 }
 
 filled_markers = ('o', '^', 'v', '<', '>',
- 's', 'd', 'D', 'h', 'H', 'p', '*')
+ 's', 'd', 'D', 'h', 'H', 'p', '*')
 
 zorder = 2
 validCap = ('butt', 'round', 'projecting')
@@ -535,7 +536,7 @@
 gc.set_foreground(self.get_markeredgecolor())
 gc.set_linewidth(self._markeredgewidth)
 gc.set_alpha(self._alpha)
- funcname = self._markers.get(self._marker, '_draw_nothing')
+ funcname = self._markerFunc
 if funcname != '_draw_nothing':
 tpath, affine = self._transformed_path.get_transformed_points_and_affine()
 if len(tpath.vertices):
@@ -573,7 +574,8 @@
 def get_markeredgecolor(self):
 if (is_string_like(self._markeredgecolor) and
 self._markeredgecolor == 'auto'):
- if self._marker in self.filled_markers:
+ if (self._marker in self.filled_markers or
+ is_math_text(self._marker)):
 return 'k'
 else:
 return self._color
@@ -774,6 +776,7 @@
 'None' nothing
 ' ' nothing
 '' nothing
+ '$...$' render the string using mathtext
 ========== ==========================
 
 
@@ -782,16 +785,18 @@
 | '<' | '>' | 'D' | 'H' | '^' | '_' | 'd'
 | 'h' | 'o' | 'p' | 's' | 'v' | 'x' | '|'
 | TICKUP | TICKDOWN | TICKLEFT | TICKRIGHT
- | 'None' | ' ' | '' ]
+ | 'None' | ' ' | '' | '$...$']
 
 """
- if marker not in self._markers:
+ if marker in self._markers:
+ self._marker = marker
+ self._markerFunc = self._markers[marker]
+ elif is_math_text(marker):
+ self._marker = marker
+ self._markerFunc = '_draw_mathtext_path'
+ else: #already handle ' ', '' in marker list
 verbose.report('Unrecognized marker style %s, %s' %
 (marker, type(marker)))
- if marker in [' ','']:
- marker = 'None'
- self._marker = marker
- self._markerFunc = self._markers[marker]
 
 def set_markeredgecolor(self, ec):
 """
@@ -867,6 +872,38 @@
 def _draw_lines(self, renderer, gc, path, trans):
 self._lineFunc(renderer, gc, path, trans)
 
+ def _draw_mathtext_path(self, renderer, gc, path, trans):
+ """
+ Draws mathtext markers '$...$' using TextPath object.
+
+ Submitted by tcb
+ """
+ from matplotlib.patches import PathPatch
+ from matplotlib.text import TextPath
+
+ gc.set_snap(False)
+
+ # again, the properties could be initialised just once outside
+ # this function
+ # Font size is irrelevant here, it will be rescaled based on
+ # the drawn size later
+ props = FontProperties(size=1.0)
+ text = TextPath(xy=(0,0), s=self.get_marker(), fontproperties=props,
+ usetex=rcParams['text.usetex'])
+ if len(text.vertices) == 0:
+ return
+ xmin, ymin = text.vertices.min(axis=0)
+ xmax, ymax = text.vertices.max(axis=0)
+ width = xmax - xmin
+ height = ymax - ymin
+ max_dim = max(width, height)
+ path_trans = Affine2D() \
+ .translate(0.5 * -width, 0.5 * -height) \
+ .scale((renderer.points_to_pixels(self.get_markersize()) / max_dim))
+
+ rgbFace = self._get_rgb_face()
+ renderer.draw_markers(gc, text, path_trans, path, trans, rgbFace)
+
 def _draw_steps_pre(self, renderer, gc, path, trans):
 vertices = self._xy
 steps = ma.zeros((2*len(vertices)-1, 2), np.float_)
@@ -1288,6 +1325,7 @@
 
 self._linestyle = other._linestyle
 self._marker = other._marker
+ self._markerFunc = other._markerFunc
 self._drawstyle = other._drawstyle
 
 
Modified: trunk/matplotlib/lib/matplotlib/text.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/text.py	2009年12月31日 15:48:55 UTC (rev 8058)
+++ trunk/matplotlib/lib/matplotlib/text.py	2009年12月31日 16:45:59 UTC (rev 8059)
@@ -997,13 +997,10 @@
 """
 # Did we find an even number of non-escaped dollar signs?
 # If so, treat is as math text.
- dollar_count = s.count(r'$') - s.count(r'\$')
- even_dollars = (dollar_count > 0 and dollar_count % 2 == 0)
-
 if rcParams['text.usetex']:
 return s, 'TeX'
 
- if even_dollars:
+ if cbook.is_math_text(s):
 return s, True
 else:
 return s.replace(r'\$', '$'), False
Modified: trunk/matplotlib/src/_path.cpp
===================================================================
--- trunk/matplotlib/src/_path.cpp	2009年12月31日 15:48:55 UTC (rev 8058)
+++ trunk/matplotlib/src/_path.cpp	2009年12月31日 16:45:59 UTC (rev 8059)
@@ -922,9 +922,13 @@
 vertices = (PyArrayObject*)PyArray_FromObject
 (vertices_obj.ptr(), PyArray_DOUBLE, 1, 2);
 if (!vertices ||
- (PyArray_NDIM(vertices) == 2 && PyArray_DIM(vertices, 1) != 2) ||
- (PyArray_NDIM(vertices) == 1 && PyArray_DIM(vertices, 0) != 2))
+ (PyArray_NDIM(vertices) == 2 && PyArray_DIM(vertices, 0) != 0 &&
+ PyArray_DIM(vertices, 1) != 2) ||
+ (PyArray_NDIM(vertices) == 1 &&
+ PyArray_DIM(vertices, 0) != 2 && PyArray_DIM(vertices, 0) != 0))
+ {
 throw Py::ValueError("Invalid vertices array.");
+ }
 
 transform = (PyArrayObject*) PyArray_FromObject
 (transform_obj.ptr(), PyArray_DOUBLE, 2, 2);
@@ -979,7 +983,7 @@
 vertex_in += stride0;
 }
 }
- else
+ else if (PyArray_DIM(vertices, 0) != 0)
 {
 char* vertex_in = PyArray_BYTES(vertices);
 double* vertex_out = (double*)PyArray_DATA(result);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <md...@us...> - 2009年12月31日 15:49:05
Revision: 8058
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8058&view=rev
Author: mdboom
Date: 2009年12月31日 15:48:55 +0000 (2009年12月31日)
Log Message:
-----------
Merged revisions 8016,8036,8057 via svnmerge from 
https://matplotlib.svn.sf.net/svnroot/matplotlib/branches/v0_99_maint
........
 r8016 | heeres | 2009年12月09日 19:09:03 -0500 (2009年12月09日) | 2 lines
 
 Mplot3d: fix scatter3d markers bug
........
 r8036 | jdh2358 | 2009年12月16日 14:21:44 -0500 (2009年12月16日) | 1 line
 
 add mpl book to index sidebar
........
 r8057 | mdboom | 2009年12月31日 10:46:58 -0500 (2009年12月31日) | 2 lines
 
 [2916753] Wrong API signature- yscale
........
Modified Paths:
--------------
 trunk/matplotlib/doc/_templates/indexsidebar.html
 trunk/matplotlib/lib/matplotlib/pyplot.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_99_maint:1-8003
 + /branches/mathtex:1-7263 /branches/v0_99_maint:1-8057
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: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
 + /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: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
Modified: trunk/matplotlib/doc/_templates/indexsidebar.html
===================================================================
--- trunk/matplotlib/doc/_templates/indexsidebar.html	2009年12月31日 15:46:58 UTC (rev 8057)
+++ trunk/matplotlib/doc/_templates/indexsidebar.html	2009年12月31日 15:48:55 UTC (rev 8058)
@@ -9,6 +9,12 @@
 pathto('users/installing') }}">installing</a>
 </p>
 
+<p>Sandro Tosi has a new book 
+<a href="http://www.packtpub.com/matplotlib-python-development/book">Matplotlib for python
+developers</a>
+also
+at <a href="http://www.amazon.com/Matplotlib-Python-Developers-Sandro-Tosi/dp/1847197906">amazon</a>.</p>
+
 <p>Build websites like matplotlib's,
 with <a href="http://sphinx.pocoo.org/">sphinx</a> and extensions for
 mpl plots, math, inheritance diagrams -- try
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: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
 + /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: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
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: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
 + /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: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
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: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
 + /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: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
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: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
 + /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: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
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: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
 + /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: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
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: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
 + /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: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
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: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
 + /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: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
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: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
 + /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: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
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: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
 + /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: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
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: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
 + /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: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
Modified: trunk/matplotlib/lib/matplotlib/pyplot.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/pyplot.py	2009年12月31日 15:46:58 UTC (rev 8057)
+++ trunk/matplotlib/lib/matplotlib/pyplot.py	2009年12月31日 15:48:55 UTC (rev 8058)
@@ -945,7 +945,7 @@
 """
 call signature::
 
- xscale(scale, **kwargs)
+ yscale(scale, **kwargs)
 
 Set the scaling for the y-axis: %(scale)s
 
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: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
 + /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: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
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: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
 + /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: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
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: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
 + /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: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
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: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
 + /branches/v0_99_maint/lib/matplotlib/tests/baseline_images/test_spines/spines_axes_positions.png: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
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <md...@us...> - 2009年12月31日 15:47:10
Revision: 8057
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8057&view=rev
Author: mdboom
Date: 2009年12月31日 15:46:58 +0000 (2009年12月31日)
Log Message:
-----------
[2916753] Wrong API signature- yscale
Modified Paths:
--------------
 branches/v0_99_maint/lib/matplotlib/pyplot.py
Modified: branches/v0_99_maint/lib/matplotlib/pyplot.py
===================================================================
--- branches/v0_99_maint/lib/matplotlib/pyplot.py	2009年12月31日 12:51:43 UTC (rev 8056)
+++ branches/v0_99_maint/lib/matplotlib/pyplot.py	2009年12月31日 15:46:58 UTC (rev 8057)
@@ -954,7 +954,7 @@
 """
 call signature::
 
- xscale(scale, **kwargs)
+ yscale(scale, **kwargs)
 
 Set the scaling for the y-axis: %(scale)s
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <ds...@us...> - 2009年12月31日 12:51:53
Revision: 8056
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8056&view=rev
Author: dsdale
Date: 2009年12月31日 12:51:43 +0000 (2009年12月31日)
Log Message:
-----------
workaround for a regression in PyQt4-4.6.{0,1}
Modified Paths:
--------------
 trunk/matplotlib/CHANGELOG
 trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG	2009年12月28日 01:34:06 UTC (rev 8055)
+++ trunk/matplotlib/CHANGELOG	2009年12月31日 12:51:43 UTC (rev 8056)
@@ -1,3 +1,5 @@
+2009年12月31日 Commit a workaround for a regression in PyQt4-4.6.{0,1} - DSD
+
 2009年12月22日 Fix cmap data for gist_earth_r, etc. -JJL
 
 2009年12月20日 spines: put spines in data coordinates, add set_bounds()
Modified: trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py	2009年12月28日 01:34:06 UTC (rev 8055)
+++ trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py	2009年12月31日 12:51:43 UTC (rev 8056)
@@ -206,6 +206,22 @@
 self._idle = True
 if d: QtCore.QTimer.singleShot(0, idle_draw)
 
+
+# XXX Hackish fix: There's a bug in PyQt. See this thread for details:
+# http://old.nabble.com/Qt4-backend:-critical-bug-with-PyQt4-v4.6%2B-td26205716.html
+# Once a release of Qt/PyQt is available without the bug, the version check
+# below can be tightened further to only be applied in the necessary versions.
+if Qt.PYQT_VERSION_STR.startswith('4.6'):
+ class FigureWindow(QtGui.QMainWindow):
+ def __init__(self):
+ super(FigureWindow, self).__init__()
+ def closeEvent(self, event):
+ super(FigureWindow, self).closeEvent(event)
+ self.emit(Qt.SIGNAL('destroyed()'))
+else:
+ FigureWindow = QtGui.QMainWindow
+# /end pyqt hackish bugfix
+
 class FigureManagerQT( FigureManagerBase ):
 """
 Public attributes
@@ -220,7 +236,7 @@
 if DEBUG: print 'FigureManagerQT.%s' % fn_name()
 FigureManagerBase.__init__( self, canvas, num )
 self.canvas = canvas
- self.window = QtGui.QMainWindow()
+ self.window = FigureWindow()
 self.window.setAttribute(QtCore.Qt.WA_DeleteOnClose)
 
 self.window.setWindowTitle("Figure %d" % num)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <ef...@us...> - 2009年12月28日 01:34:14
Revision: 8055
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8055&view=rev
Author: efiring
Date: 2009年12月28日 01:34:06 +0000 (2009年12月28日)
Log Message:
-----------
Fix bug in Line2D from last commit: restore full recache in unit chane callback
Modified Paths:
--------------
 trunk/matplotlib/lib/matplotlib/lines.py
Modified: trunk/matplotlib/lib/matplotlib/lines.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/lines.py	2009年12月28日 00:21:50 UTC (rev 8054)
+++ trunk/matplotlib/lib/matplotlib/lines.py	2009年12月28日 01:34:06 UTC (rev 8055)
@@ -388,9 +388,9 @@
 def set_axes(self, ax):
 Artist.set_axes(self, ax)
 if ax.xaxis is not None:
- self._xcid = ax.xaxis.callbacks.connect('units', self.recache)
+ self._xcid = ax.xaxis.callbacks.connect('units', self.recache_always)
 if ax.yaxis is not None:
- self._ycid = ax.yaxis.callbacks.connect('units', self.recache)
+ self._ycid = ax.yaxis.callbacks.connect('units', self.recache_always)
 set_axes.__doc__ = Artist.set_axes.__doc__
 
 def set_data(self, *args):
@@ -407,8 +407,11 @@
 self.set_xdata(x)
 self.set_ydata(y)
 
- def recache(self):
- if self._invalidx:
+ def recache_always(self):
+ self.recache(always=True)
+
+ def recache(self, always=False):
+ if always or self._invalidx:
 xconv = self.convert_xunits(self._xorig)
 if ma.isMaskedArray(self._xorig):
 x = ma.asarray(xconv, float)
@@ -417,7 +420,7 @@
 x = x.ravel()
 else:
 x = self._x
- if self._invalidy:
+ if always or self._invalidy:
 yconv = self.convert_yunits(self._yorig)
 if ma.isMaskedArray(self._yorig):
 y = ma.asarray(yconv, float)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <ef...@us...> - 2009年12月28日 00:25:32
Revision: 8054
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8054&view=rev
Author: efiring
Date: 2009年12月28日 00:21:50 +0000 (2009年12月28日)
Log Message:
-----------
Line2D: simplify set_data functionality; recache only a coord. that was set.
Modified Paths:
--------------
 trunk/matplotlib/examples/pylab_examples/clippedline.py
 trunk/matplotlib/lib/matplotlib/lines.py
Modified: trunk/matplotlib/examples/pylab_examples/clippedline.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/clippedline.py	2009年12月27日 23:18:51 UTC (rev 8053)
+++ trunk/matplotlib/examples/pylab_examples/clippedline.py	2009年12月28日 00:21:50 UTC (rev 8054)
@@ -1,6 +1,11 @@
 """
 Clip a line according to the current xlimits, and change the marker
-style when zoomed in
+style when zoomed in.
+
+It is not clear this example is still needed or valid; clipping
+is now automatic for Line2D objects when x is sorted in
+ascending order.
+
 """
 
 from matplotlib.lines import Line2D
@@ -19,8 +24,7 @@
 
 def set_data(self, *args, **kwargs):
 Line2D.set_data(self, *args, **kwargs)
- if self._invalid:
- self.recache()
+ self.recache()
 self.xorig = np.array(self._x)
 self.yorig = np.array(self._y)
 
Modified: trunk/matplotlib/lib/matplotlib/lines.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/lines.py	2009年12月27日 23:18:51 UTC (rev 8053)
+++ trunk/matplotlib/lib/matplotlib/lines.py	2009年12月28日 00:21:50 UTC (rev 8054)
@@ -248,7 +248,8 @@
 
 self._xorig = np.asarray([])
 self._yorig = np.asarray([])
- self._invalid = True
+ self._invalidx = True
+ self._invalidy = True
 self.set_data(xdata, ydata)
 
 def contains(self, mouseevent):
@@ -272,7 +273,7 @@
 raise ValueError,"pick radius should be a distance"
 
 # Make sure we have data to plot
- if self._invalid:
+ if self._invalidy or self._invalidx:
 self.recache()
 if len(self._xy)==0: return False,{}
 
@@ -403,36 +404,28 @@
 else:
 x, y = args
 
- not_masked = 0
- if not ma.isMaskedArray(x):
- x = np.asarray(x)
- not_masked += 1
- if not ma.isMaskedArray(y):
- y = np.asarray(y)
- not_masked += 1
+ self.set_xdata(x)
+ self.set_ydata(y)
 
- if (not_masked < 2 or
- (x is not self._xorig and
- (x.shape != self._xorig.shape or np.any(x != self._xorig))) or
- (y is not self._yorig and
- (y.shape != self._yorig.shape or np.any(y != self._yorig)))):
- self._xorig = x
- self._yorig = y
- self._invalid = True
-
 def recache(self):
- #if self.axes is None: print 'recache no axes'
- #else: print 'recache units', self.axes.xaxis.units, self.axes.yaxis.units
- if ma.isMaskedArray(self._xorig) or ma.isMaskedArray(self._yorig):
- x = ma.asarray(self.convert_xunits(self._xorig), float)
- y = ma.asarray(self.convert_yunits(self._yorig), float)
- x = ma.ravel(x)
- y = ma.ravel(y)
+ if self._invalidx:
+ xconv = self.convert_xunits(self._xorig)
+ if ma.isMaskedArray(self._xorig):
+ x = ma.asarray(xconv, float)
+ else:
+ x = np.asarray(xconv, float)
+ x = x.ravel()
 else:
- x = np.asarray(self.convert_xunits(self._xorig), float)
- y = np.asarray(self.convert_yunits(self._yorig), float)
- x = np.ravel(x)
- y = np.ravel(y)
+ x = self._x
+ if self._invalidy:
+ yconv = self.convert_yunits(self._yorig)
+ if ma.isMaskedArray(self._yorig):
+ y = ma.asarray(yconv, float)
+ else:
+ y = np.asarray(yconv, float)
+ y = y.ravel()
+ else:
+ y = self._y
 
 if len(x)==1 and len(y)>1:
 x = x * np.ones(y.shape, float)
@@ -455,8 +448,7 @@
 self._subslice = False
 if (self.axes and len(x) > 100 and self._is_sorted(x) and
 self.axes.name == 'rectilinear' and
- self.axes.get_xscale() == 'linear' and
- self.axes.get_yscale() == 'linear'):
+ self.axes.get_xscale() == 'linear'):
 self._subslice = True
 if hasattr(self, '_path'):
 interpolation_steps = self._path._interpolation_steps
@@ -464,7 +456,8 @@
 interpolation_steps = 1
 self._path = Path(self._xy, None, interpolation_steps)
 self._transformed_path = None
- self._invalid = False
+ self._invalidx = False
+ self._invalidy = False
 
 def _transform_path(self, subslice=None):
 # Masked arrays are now handled by the Path class itself
@@ -482,7 +475,8 @@
 ACCEPTS: a :class:`matplotlib.transforms.Transform` instance
 """
 Artist.set_transform(self, t)
- self._invalid = True
+ self._invalidx = True
+ self._invalidy = True
 
 def _is_sorted(self, x):
 "return true if x is sorted"
@@ -491,7 +485,7 @@
 
 @allow_rasterization
 def draw(self, renderer):
- if self._invalid:
+ if self._invalidy or self._invalidx:
 self.recache()
 if self._subslice and self.axes:
 # Need to handle monotonically decreasing case also...
@@ -619,7 +613,7 @@
 """
 if orig:
 return self._xorig
- if self._invalid:
+ if self._invalidx:
 self.recache()
 return self._x
 
@@ -632,7 +626,7 @@
 """
 if orig:
 return self._yorig
- if self._invalid:
+ if self._invalidy:
 self.recache()
 return self._y
 
@@ -641,7 +635,7 @@
 Return the :class:`~matplotlib.path.Path` object associated
 with this line.
 """
- if self._invalid:
+ if self._invalidy or self._invalidx:
 self.recache()
 return self._path
 
@@ -649,7 +643,7 @@
 """
 Return the *xy* data as a Nx2 numpy array.
 """
- if self._invalid:
+ if self._invalidy or self.invalidx:
 self.recache()
 return self._xy
 
@@ -840,7 +834,8 @@
 
 ACCEPTS: 1D array
 """
- self.set_data(x, self._yorig)
+ self._xorig = x
+ self._invalidx = True
 
 def set_ydata(self, y):
 """
@@ -848,7 +843,8 @@
 
 ACCEPTS: 1D array
 """
- self.set_data(self._xorig, y)
+ self._yorig = y
+ self._invalidy = True
 
 def set_dashes(self, seq):
 """
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <ef...@us...> - 2009年12月27日 23:19:00
Revision: 8053
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8053&view=rev
Author: efiring
Date: 2009年12月27日 23:18:51 +0000 (2009年12月27日)
Log Message:
-----------
fix whitespace, one docstring in lines.py
Modified Paths:
--------------
 trunk/matplotlib/lib/matplotlib/lines.py
Modified: trunk/matplotlib/lib/matplotlib/lines.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/lines.py	2009年12月22日 23:43:09 UTC (rev 8052)
+++ trunk/matplotlib/lib/matplotlib/lines.py	2009年12月27日 23:18:51 UTC (rev 8053)
@@ -233,7 +233,7 @@
 self.set_markerfacecolor(markerfacecolor)
 self.set_markeredgecolor(markeredgecolor)
 self.set_markeredgewidth(markeredgewidth)
-	self.set_fillstyle(fillstyle)
+ self.set_fillstyle(fillstyle)
 
 self._point_size_reduction = 0.5
 
@@ -323,9 +323,9 @@
 
 def get_fillstyle(self):
 """
-	return the marker fillstyle
+ return the marker fillstyle
 """
-	return self._fillstyle
+ return self._fillstyle
 
 def set_fillstyle(self, fs):
 """
@@ -335,7 +335,7 @@
 ACCEPTS: ['full' | 'left' | 'right' | 'bottom' | 'top']
 """
 assert fs in ['full', 'left' , 'right' , 'bottom' , 'top']
-	self._fillstyle = fs
+ self._fillstyle = fs
 
 def set_markevery(self, every):
 """
@@ -396,7 +396,7 @@
 """
 Set the x and y data
 
- ACCEPTS: 2D array
+ ACCEPTS: 2D array (rows are x, y) or two 1D arrays
 """
 if len(args)==1:
 x, y = args[0]
@@ -931,8 +931,8 @@
 
 
 def _draw_point(self, renderer, gc, path, path_trans):
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 
 w = renderer.points_to_pixels(self._markersize) * \
@@ -946,8 +946,8 @@
 
 _draw_pixel_transform = Affine2D().translate(-0.5, -0.5)
 def _draw_pixel(self, renderer, gc, path, path_trans):
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 
 rgbFace = self._get_rgb_face()
@@ -958,8 +958,8 @@
 
 
 def _draw_circle(self, renderer, gc, path, path_trans):
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 
 w = renderer.points_to_pixels(self._markersize) * 0.5
@@ -974,8 +974,8 @@
 _triangle_path = Path([[0.0, 1.0], [-1.0, -1.0], [1.0, -1.0], [0.0, 1.0]])
 def _draw_triangle_up(self, renderer, gc, path, path_trans):
 
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 
 gc.set_snap(renderer.points_to_pixels(self._markersize) >= 5.0)
@@ -987,8 +987,8 @@
 
 
 def _draw_triangle_down(self, renderer, gc, path, path_trans):
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 
 gc.set_snap(renderer.points_to_pixels(self._markersize) >= 5.0)
@@ -1000,8 +1000,8 @@
 
 
 def _draw_triangle_left(self, renderer, gc, path, path_trans):
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 
 gc.set_snap(renderer.points_to_pixels(self._markersize) >= 5.0)
@@ -1013,8 +1013,8 @@
 
 
 def _draw_triangle_right(self, renderer, gc, path, path_trans):
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 
 gc.set_snap(renderer.points_to_pixels(self._markersize) >= 5.0)
@@ -1030,8 +1030,8 @@
 side = renderer.points_to_pixels(self._markersize)
 transform = Affine2D().translate(-0.5, -0.5).scale(side)
 rgbFace = self._get_rgb_face()
-	fs = self.get_fillstyle()
-	if fs=='full':
+ fs = self.get_fillstyle()
+ if fs=='full':
 renderer.draw_markers(gc, Path.unit_rectangle(), transform,
 path, path_trans, rgbFace)
 else:
@@ -1052,8 +1052,8 @@
 path, path_trans, None)
 
 def _draw_diamond(self, renderer, gc, path, path_trans):
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 gc.set_snap(renderer.points_to_pixels(self._markersize) >= 5.0)
 side = renderer.points_to_pixels(self._markersize)
@@ -1064,8 +1064,8 @@
 
 
 def _draw_thin_diamond(self, renderer, gc, path, path_trans):
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 gc.set_snap(renderer.points_to_pixels(self._markersize) >= 3.0)
 offset = renderer.points_to_pixels(self._markersize)
@@ -1077,8 +1077,8 @@
 
 
 def _draw_pentagon(self, renderer, gc, path, path_trans):
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 gc.set_snap(renderer.points_to_pixels(self._markersize) >= 5.0)
 offset = 0.5 * renderer.points_to_pixels(self._markersize)
@@ -1088,8 +1088,8 @@
 path, path_trans, rgbFace)
 
 def _draw_star(self, renderer, gc, path, path_trans):
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 gc.set_snap(renderer.points_to_pixels(self._markersize) >= 5.0)
 offset = 0.5 * renderer.points_to_pixels(self._markersize)
@@ -1101,8 +1101,8 @@
 
 
 def _draw_hexagon1(self, renderer, gc, path, path_trans):
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 gc.set_snap(renderer.points_to_pixels(self._markersize) >= 5.0)
 offset = 0.5 * renderer.points_to_pixels(self._markersize)
@@ -1113,8 +1113,8 @@
 
 
 def _draw_hexagon2(self, renderer, gc, path, path_trans):
- 	fs = self.get_fillstyle()
-	if fs!='full':
+ fs = self.get_fillstyle()
+ if fs!='full':
 raise NotImplementedError('non-full markers have not been implemented for this marker style yet; please contribute')
 gc.set_snap(renderer.points_to_pixels(self._markersize) >= 5.0)
 offset = 0.5 * renderer.points_to_pixels(self._markersize)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <ef...@us...> - 2009年12月22日 23:43:16
Revision: 8052
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8052&view=rev
Author: efiring
Date: 2009年12月22日 23:43:09 +0000 (2009年12月22日)
Log Message:
-----------
pyplot.spy should set current image only if it is making an image
Modified Paths:
--------------
 trunk/matplotlib/boilerplate.py
 trunk/matplotlib/lib/matplotlib/pyplot.py
Modified: trunk/matplotlib/boilerplate.py
===================================================================
--- trunk/matplotlib/boilerplate.py	2009年12月22日 19:49:49 UTC (rev 8051)
+++ trunk/matplotlib/boilerplate.py	2009年12月22日 23:43:09 UTC (rev 8052)
@@ -86,7 +86,7 @@
 'semilogx',
 'semilogy',
 'specgram',
- 'spy',
+ #'spy',
 'stem',
 'step',
 'vlines',
@@ -111,7 +111,7 @@
 'pcolor' : 'sci(%(ret)s)',
 'pcolormesh': 'sci(%(ret)s)',
 'imshow' : 'sci(%(ret)s)',
- 'spy' : 'sci(%(ret)s)',
+ #'spy' : 'sci(%(ret)s)', ### may return image or Line2D
 'quiver' : 'sci(%(ret)s)',
 'specgram' : 'sci(%(ret)s[-1])',
 
Modified: trunk/matplotlib/lib/matplotlib/pyplot.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/pyplot.py	2009年12月22日 19:49:49 UTC (rev 8051)
+++ trunk/matplotlib/lib/matplotlib/pyplot.py	2009年12月22日 23:43:09 UTC (rev 8052)
@@ -1600,6 +1600,27 @@
 addendum = docstring.Appender(msg, '\n\n')
 return lambda func: addendum(docstring.copy_dedent(base)(func))
 
+
+# This function cannot be generated by boilerplate.py because it may
+# return an image or a line.
+@autogen_docstring(Axes.spy)
+def spy(Z, precision=0, marker=None, markersize=None, aspect='equal', hold=None, **kwargs):
+ ax = gca()
+ # allow callers to override the hold state by passing hold=True|False
+ washold = ax.ishold()
+
+ if hold is not None:
+ ax.hold(hold)
+ try:
+ ret = ax.spy(Z, precision, marker, markersize, aspect, **kwargs)
+ draw_if_interactive()
+ finally:
+ ax.hold(washold)
+ if isinstance(ret, cm.ScalarMappable):
+ sci(ret)
+ return ret
+
+
 ## Plotting part 2: autogenerated wrappers for axes methods ##
 
 # This function was autogenerated by boilerplate.py. Do not edit as
@@ -2252,24 +2273,7 @@
 sci(ret[-1])
 return ret
 
-# This function was autogenerated by boilerplate.py. Do not edit as
-# changes will be lost
-@autogen_docstring(Axes.spy)
-def spy(Z, precision=0, marker=None, markersize=None, aspect='equal', hold=None, **kwargs):
- ax = gca()
- # allow callers to override the hold state by passing hold=True|False
- washold = ax.ishold()
 
- if hold is not None:
- ax.hold(hold)
- try:
- ret = ax.spy(Z, precision, marker, markersize, aspect, **kwargs)
- draw_if_interactive()
- finally:
- ax.hold(washold)
- sci(ret)
- return ret
-
 # This function was autogenerated by boilerplate.py. Do not edit as
 # changes will be lost
 @autogen_docstring(Axes.stem)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <lee...@us...> - 2009年12月22日 19:49:58
Revision: 8051
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8051&view=rev
Author: leejjoon
Date: 2009年12月22日 19:49:49 +0000 (2009年12月22日)
Log Message:
-----------
Fix cmap data for gist_earth_r, etc.
Modified Paths:
--------------
 trunk/matplotlib/CHANGELOG
 trunk/matplotlib/lib/matplotlib/_cm.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG	2009年12月22日 17:03:29 UTC (rev 8050)
+++ trunk/matplotlib/CHANGELOG	2009年12月22日 19:49:49 UTC (rev 8051)
@@ -1,3 +1,5 @@
+2009年12月22日 Fix cmap data for gist_earth_r, etc. -JJL
+
 2009年12月20日 spines: put spines in data coordinates, add set_bounds()
 call. -ADS
 
Modified: trunk/matplotlib/lib/matplotlib/_cm.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/_cm.py	2009年12月22日 17:03:29 UTC (rev 8050)
+++ trunk/matplotlib/lib/matplotlib/_cm.py	2009年12月22日 19:49:49 UTC (rev 8051)
@@ -1434,7 +1434,7 @@
 (0.5490, 0.4719, 0.4719),
 (0.6980, 0.7176, 0.7176),
 (0.7882, 0.7553, 0.7553),
-(1.0000, 0.9922, 0),
+(1.0000, 0.9922, 0.9922),
 ), 'green': (
 (0.0, 0.0, 0.0000),
 (0.0275, 0.0000, 0.0000),
@@ -1458,7 +1458,7 @@
 (0.9569, 0.8635, 0.8635),
 (0.9647, 0.8816, 0.8816),
 (0.9961, 0.9733, 0.9733),
-(1.0000, 0.9843, 0),
+(1.0000, 0.9843, 0.9843),
 ), 'blue': (
 (0.0, 0.0, 0.0000),
 (0.0039, 0.1684, 0.1684),
@@ -1470,7 +1470,7 @@
 (0.5451, 0.3205, 0.3205),
 (0.7843, 0.3961, 0.3961),
 (0.8941, 0.6651, 0.6651),
-(1.0000, 0.9843, 0),
+(1.0000, 0.9843, 0.9843),
 )}
 
 _gist_gray_data = {
@@ -1495,7 +1495,7 @@
 (0.7922, 1.0000, 1.0000),
 (0.8471, 0.6218, 0.6218),
 (0.8980, 0.9235, 0.9235),
-(1.0000, 0.9961, 0),
+(1.0000, 0.9961, 0.9961),
 ), 'green': (
 (0.0, 0.0, 0.0000),
 (0.0510, 0.3722, 0.3722),
@@ -1516,9 +1516,9 @@
 (0.7922, 0.0000, 0.0000),
 (0.8431, 0.1753, 0.1753),
 (0.8980, 0.5000, 0.5000),
-(1.0000, 0.9725, 0),
+(1.0000, 0.9725, 0.9725),
 ), 'blue': (
-(0.0, 0.0, 0.5020),
+(0.0, 0.5020, 0.5020),
 (0.0510, 0.0222, 0.0222),
 (0.1098, 1.0000, 1.0000),
 (0.2039, 1.0000, 1.0000),
@@ -1535,7 +1535,7 @@
 (0.8000, 1.0000, 1.0000),
 (0.8431, 1.0000, 1.0000),
 (0.8980, 0.9341, 0.9341),
-(1.0000, 0.9961, 0),
+(1.0000, 0.9961, 0.9961),
 )}
 
 _gist_rainbow_data = (
@@ -1552,7 +1552,7 @@
 _gist_stern_data = {
 'red': (
 (0.000, 0.000, 0.000), (0.0547, 1.000, 1.000),
- (0.250, 0.027, 0.027), (0.2500, 0.250, 0.250),
+ (0.250, 0.027, 0.250), #(0.2500, 0.250, 0.250),
 (1.000, 1.000, 1.000)),
 'green': ((0, 0, 0), (1, 1, 0)),
 'blue': (
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <md...@us...> - 2009年12月22日 17:03:38
Revision: 8050
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8050&view=rev
Author: mdboom
Date: 2009年12月22日 17:03:29 +0000 (2009年12月22日)
Log Message:
-----------
Add docs for new features in mathtext
Modified Paths:
--------------
 trunk/matplotlib/doc/users/mathtext.rst
Modified: trunk/matplotlib/doc/users/mathtext.rst
===================================================================
--- trunk/matplotlib/doc/users/mathtext.rst	2009年12月21日 19:49:17 UTC (rev 8049)
+++ trunk/matplotlib/doc/users/mathtext.rst	2009年12月22日 17:03:29 UTC (rev 8050)
@@ -23,11 +23,11 @@
 customization variable ``mathtext.fontset`` (see
 :ref:`customizing-matplotlib`)
 
-.. note:: 
- On `"narrow" <http://wordaligned.org/articles/narrow-python>`_ builds 
+.. note::
+ On `"narrow" <http://wordaligned.org/articles/narrow-python>`_ builds
 of Python, if you use the STIX fonts you should also set
 ``ps.fonttype`` and ``pdf.fonttype`` to 3 (the default), not 42.
- Otherwise `some characters will not be visible 
+ Otherwise `some characters will not be visible
 <http://thread.gmane.org/gmane.comp.python.matplotlib.general/19963/focus=19978>`_.
 
 Here is a simple example::
@@ -85,18 +85,20 @@
 
 \sum_{i=0}^\infty x_i
 
-Fractions
----------
+Fractions, binomials and stacked numbers
+----------------------------------------
 
-Fractions can be created with the ``\frac{}{}`` command::
+Fractions, binomials and stacked numbers can be created with the
+``\frac{}{}``, ``\binom{}{}`` and ``\stackrel{}{}`` commands,
+respectively::
 
- r'$\frac{3}{4}$'
+ r'$\frac{3}{4} \binom{3}{4} \stackrel{3}{4}$'
 
 produces
 
 .. math::
 
- \frac{3}{4}
+ \frac{3}{4} \binom{3}{4} \stackrel{3}{4}
 
 Fractions can be arbitrarily nested::
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <ef...@us...> - 2009年12月21日 19:49:31
Revision: 8049
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8049&view=rev
Author: efiring
Date: 2009年12月21日 19:49:17 +0000 (2009年12月21日)
Log Message:
-----------
zorder support in figure: use same sort idiom as in axes
Modified Paths:
--------------
 trunk/matplotlib/lib/matplotlib/figure.py
Modified: trunk/matplotlib/lib/matplotlib/figure.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/figure.py	2009年12月21日 03:49:59 UTC (rev 8048)
+++ trunk/matplotlib/lib/matplotlib/figure.py	2009年12月21日 19:49:17 UTC (rev 8049)
@@ -33,6 +33,8 @@
 import matplotlib.cbook as cbook
 from matplotlib import docstring
 
+from operator import itemgetter
+
 docstring.interpd.update(projection_names = get_projection_names())
 
 class SubplotParams:
@@ -742,8 +744,6 @@
 # a list of (zorder, func_to_call, list_of_args)
 dsu = []
 
-
- # todo: respect zorder
 for a in self.patches:
 dsu.append( (a.get_zorder(), a.draw, [renderer]))
 
@@ -797,8 +797,7 @@
 for a in self.legends:
 dsu.append( (a.get_zorder(), a.draw, [renderer]))
 
-
- dsu.sort(key=lambda x: x[0])
+ dsu.sort(key=itemgetter(0))
 for zorder, func, args in dsu:
 func(*args)
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <as...@us...> - 2009年12月21日 03:50:07
Revision: 8048
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8048&view=rev
Author: astraw
Date: 2009年12月21日 03:49:59 +0000 (2009年12月21日)
Log Message:
-----------
spines and ticks: implement smart bounds
Modified Paths:
--------------
 trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py
 trunk/matplotlib/lib/matplotlib/axis.py
 trunk/matplotlib/lib/matplotlib/spines.py
Modified: trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py	2009年12月21日 02:24:14 UTC (rev 8047)
+++ trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py	2009年12月21日 03:49:59 UTC (rev 8048)
@@ -37,6 +37,8 @@
 ax.spines['right'].set_color('none')
 ax.spines['bottom'].set_position('center')
 ax.spines['top'].set_color('none')
+ax.spines['left'].set_smart_bounds(True)
+ax.spines['bottom'].set_smart_bounds(True)
 ax.xaxis.set_ticks_position('bottom')
 ax.yaxis.set_ticks_position('left')
 
@@ -47,6 +49,8 @@
 ax.spines['right'].set_color('none')
 ax.spines['bottom'].set_position('zero')
 ax.spines['top'].set_color('none')
+ax.spines['left'].set_smart_bounds(True)
+ax.spines['bottom'].set_smart_bounds(True)
 ax.xaxis.set_ticks_position('bottom')
 ax.yaxis.set_ticks_position('left')
 
@@ -57,6 +61,8 @@
 ax.spines['right'].set_color('none')
 ax.spines['bottom'].set_position(('axes',0.1))
 ax.spines['top'].set_color('none')
+ax.spines['left'].set_smart_bounds(True)
+ax.spines['bottom'].set_smart_bounds(True)
 ax.xaxis.set_ticks_position('bottom')
 ax.yaxis.set_ticks_position('left')
 
@@ -67,15 +73,17 @@
 ax.spines['right'].set_color('none')
 ax.spines['bottom'].set_position(('data',2))
 ax.spines['top'].set_color('none')
+ax.spines['left'].set_smart_bounds(True)
+ax.spines['bottom'].set_smart_bounds(True)
 ax.xaxis.set_ticks_position('bottom')
 ax.yaxis.set_ticks_position('left')
-
 # ----------------------------------------------------
 
 def adjust_spines(ax,spines):
 for loc, spine in ax.spines.iteritems():
 if loc in spines:
 spine.set_position(('outward',10)) # outward by 10 points
+ spine.set_smart_bounds(True)
 else:
 spine.set_color('none') # don't draw spine
 
Modified: trunk/matplotlib/lib/matplotlib/axis.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axis.py	2009年12月21日 02:24:14 UTC (rev 8047)
+++ trunk/matplotlib/lib/matplotlib/axis.py	2009年12月21日 03:49:59 UTC (rev 8048)
@@ -15,6 +15,7 @@
 import matplotlib.ticker as mticker
 import matplotlib.transforms as mtransforms
 import matplotlib.units as munits
+import numpy as np
 
 GRIDLINE_INTERPOLATION_STEPS = 180
 
@@ -539,6 +540,8 @@
 #self.minor = dummy()
 
 self._autolabelpos = True
+ self._smart_bounds = False
+
 self.label = self._get_label()
 self.labelpad = 5
 self.offsetText = self._get_offset_text()
@@ -737,6 +740,14 @@
 bbox2 = mtransforms.Bbox.from_extents(0, 0, 0, 0)
 return bbox, bbox2
 
+ def set_smart_bounds(self,value):
+ """set the axis to have smart bounds"""
+ self._smart_bounds = value
+
+ def get_smart_bounds(self):
+ """get whether the axis has smart bounds"""
+ return self._smart_bounds
+
 @allow_rasterization
 def draw(self, renderer, *args, **kwargs):
 'Draw the axis lines, grid lines, tick lines and labels'
@@ -746,7 +757,47 @@
 if not self.get_visible(): return
 renderer.open_group(__name__)
 interval = self.get_view_interval()
- for tick, loc, label in self.iter_ticks():
+ tick_tups = [ t for t in self.iter_ticks()]
+ if self._smart_bounds:
+ # handle inverted limits
+ view_low, view_high = min(*interval), max(*interval)
+ data_low, data_high = self.get_data_interval()
+ if data_low > data_high:
+ data_low, data_high = data_high, data_low
+ locs = [ti[1] for ti in tick_tups]
+ locs.sort()
+ locs = np.array(locs)
+ if len(locs):
+ if data_low <= view_low:
+ # data extends beyond view, take view as limit
+ ilow = view_low
+ else:
+ # data stops within view, take best tick
+ cond = locs <= data_low
+ good_locs = locs[cond]
+ if len(good_locs) > 0:
+ # last tick prior or equal to first data point
+ ilow = good_locs[-1]
+ else:
+ # No ticks (why not?), take first tick
+ ilow = locs[0]
+ if data_high >= view_high:
+ # data extends beyond view, take view as limit
+ ihigh = view_high
+ else:
+ # data stops within view, take best tick
+ cond = locs >= data_high
+ good_locs = locs[cond]
+ if len(good_locs) > 0:
+ # first tick after or equal to last data point
+ ihigh = good_locs[0]
+ else:
+ # No ticks (why not?), take last tick
+ ihigh = locs[-1]
+ tick_tups = [ ti for ti in tick_tups
+ if (ti[1] >= ilow) and (ti[1] <= ihigh)]
+
+ for tick, loc, label in tick_tups:
 if tick is None: continue
 if not mtransforms.interval_contains(interval, loc): continue
 tick.update_position(loc)
Modified: trunk/matplotlib/lib/matplotlib/spines.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/spines.py	2009年12月21日 02:24:14 UTC (rev 8047)
+++ trunk/matplotlib/lib/matplotlib/spines.py	2009年12月21日 03:49:59 UTC (rev 8048)
@@ -59,6 +59,7 @@
 self.set_transform(self.axes.transData) # default transform
 
 self._bounds = None # default bounds
+ self._smart_bounds = False
 
 # Defer initial position determination. (Not much support for
 # non-rectangular axes is currently implemented, and this lets
@@ -78,6 +79,20 @@
 # Note: This cannot be calculated until this is added to an Axes
 self._patch_transform = mtransforms.IdentityTransform()
 
+ def set_smart_bounds(self,value):
+ """set the spine and associated axis to have smart bounds"""
+ self._smart_bounds = value
+
+ # also set the axis if possible
+ if self.spine_type in ('left','right'):
+ self.axes.yaxis.set_smart_bounds(value)
+ elif self.spine_type in ('top','bottom'):
+ self.axes.xaxis.set_smart_bounds(value)
+
+ def get_smart_bounds(self):
+ """get whether the spine has smart bounds"""
+ return self._smart_bounds
+
 def set_patch_circle(self,center,radius):
 """set the spine to be circular"""
 self._patch_type = 'circle'
@@ -141,6 +156,26 @@
 if self.axis is not None:
 self.axis.cla()
 
+ def is_frame_like(self):
+ """return True if directly on axes frame
+
+ This is useful for determining if a spine is the edge of an
+ old style MPL plot. If so, this function will return True.
+ """
+ self._ensure_position_is_set()
+ position = self._position
+ if cbook.is_string_like(position):
+ if position=='center':
+ position = ('axes',0.5)
+ elif position=='zero':
+ position = ('data',0)
+ assert len(position)==2, "position should be 2-tuple"
+ position_type, amount = position
+ if position_type=='outward' and amount == 0:
+ return True
+ else:
+ return False
+
 def _adjust_location(self):
 """automatically set spine bounds to the view interval"""
 
@@ -154,6 +189,61 @@
 low,high = self.axes.viewLim.intervalx
 else:
 raise ValueError('unknown spine spine_type: %s'%self.spine_type)
+
+ if self._smart_bounds:
+ # attempt to set bounds in sophisticated way
+ if low > high:
+ # handle inverted limits
+ low,high=high,low
+
+ viewlim_low = low
+ viewlim_high = high
+
+ del low, high
+
+ if self.spine_type in ('left','right'):
+ datalim_low,datalim_high = self.axes.dataLim.intervaly
+ ticks = self.axes.get_yticks()
+ elif self.spine_type in ('top','bottom'):
+ datalim_low,datalim_high = self.axes.dataLim.intervalx
+ ticks = self.axes.get_xticks()
+ # handle inverted limits
+ ticks = list(ticks)
+ ticks.sort()
+ ticks = np.array(ticks)
+ if datalim_low > datalim_high:
+ datalim_low, datalim_high = datalim_high, datalim_low
+
+ if datalim_low < viewlim_low:
+ # Data extends past view. Clip line to view.
+ low = viewlim_low
+ else:
+ # Data ends before view ends.
+ cond = (ticks <= datalim_low) & (ticks >= viewlim_low)
+ tickvals = ticks[cond]
+ if len(tickvals):
+ # A tick is less than or equal to lowest data point.
+ low = tickvals[-1]
+ else:
+ # No tick is available
+ low = datalim_low
+ low = max(low,viewlim_low)
+
+ if datalim_high > viewlim_high:
+ # Data extends past view. Clip line to view.
+ high = viewlim_high
+ else:
+ # Data ends before view ends.
+ cond = (ticks >= datalim_high) & (ticks <= viewlim_high)
+ tickvals = ticks[cond]
+ if len(tickvals):
+ # A tick is greater than or equal to highest data point.
+ high = tickvals[0]
+ else:
+ # No tick is available
+ high = datalim_high
+ high = min(high,viewlim_high)
+
 else:
 low,high = self._bounds
 
@@ -316,11 +406,16 @@
 raise ValueError("unknown spine_transform type: %s"%what)
 
 def set_bounds( self, low, high ):
+ """Set the bounds of the spine."""
 if self.spine_type == 'circle':
 raise ValueError(
 'set_bounds() method incompatible with circular spines')
 self._bounds = (low, high)
 
+ def get_bounds( self ):
+ """Get the bounds of the spine."""
+ return self._bounds
+
 @classmethod
 def linear_spine(cls, axes, spine_type, **kwargs):
 """
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <as...@us...> - 2009年12月21日 02:24:28
Revision: 8047
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8047&view=rev
Author: astraw
Date: 2009年12月21日 02:24:14 +0000 (2009年12月21日)
Log Message:
-----------
spines: attempt to fix initial placement bug
Modified Paths:
--------------
 trunk/matplotlib/lib/matplotlib/axes.py
 trunk/matplotlib/lib/matplotlib/spines.py
Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py	2009年12月21日 00:47:49 UTC (rev 8046)
+++ trunk/matplotlib/lib/matplotlib/axes.py	2009年12月21日 02:24:14 UTC (rev 8047)
@@ -2065,9 +2065,6 @@
 other.figure.canvas is not None):
 other.figure.canvas.draw_idle()
 
- for loc in ('bottom','top'):
- self.spines[loc].set_bounds(xmin,xmax)
-
 return xmin, xmax
 
 def get_xscale(self):
@@ -2242,9 +2239,6 @@
 other.figure.canvas is not None):
 other.figure.canvas.draw_idle()
 
- for loc in ('left','right'):
- self.spines[loc].set_bounds(ymin,ymax)
-
 return ymin, ymax
 
 def get_yscale(self):
Modified: trunk/matplotlib/lib/matplotlib/spines.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/spines.py	2009年12月21日 00:47:49 UTC (rev 8046)
+++ trunk/matplotlib/lib/matplotlib/spines.py	2009年12月21日 02:24:14 UTC (rev 8047)
@@ -11,6 +11,7 @@
 import matplotlib.patches as mpatches
 import matplotlib.path as mpath
 import matplotlib.cbook as cbook
+import numpy as np
 import warnings
 
 class Spine(mpatches.Patch):
@@ -57,6 +58,8 @@
 self.set_zorder(2.5)
 self.set_transform(self.axes.transData) # default transform
 
+ self._bounds = None # default bounds
+
 # Defer initial position determination. (Not much support for
 # non-rectangular axes is currently implemented, and this lets
 # them pass through the spines machinery without errors.)
@@ -138,6 +141,39 @@
 if self.axis is not None:
 self.axis.cla()
 
+ def _adjust_location(self):
+ """automatically set spine bounds to the view interval"""
+
+ if self.spine_type == 'circle':
+ return
+
+ if self._bounds is None:
+ if self.spine_type in ('left','right'):
+ low,high = self.axes.viewLim.intervaly
+ elif self.spine_type in ('top','bottom'):
+ low,high = self.axes.viewLim.intervalx
+ else:
+ raise ValueError('unknown spine spine_type: %s'%self.spine_type)
+ else:
+ low,high = self._bounds
+
+ v1 = self._path.vertices[:] # copy
+ assert v1.shape == (2,2), 'unexpected vertices shape'
+ if self.spine_type in ['left','right']:
+ v1[0,1] = low
+ v1[1,1] = high
+ elif self.spine_type in ['bottom','top']:
+ v1[0,0] = low
+ v1[1,0] = high
+ else:
+ raise ValueError('unable to set bounds for spine "%s"'%spine_type)
+ self._path.vertices = v1 # replace
+
+ @allow_rasterization
+ def draw(self, renderer):
+ self._adjust_location()
+ return super( Spine, self).draw(renderer)
+
 def _calc_offset_transform(self):
 """calculate the offset transform performed by the spine"""
 self._ensure_position_is_set()
@@ -280,17 +316,10 @@
 raise ValueError("unknown spine_transform type: %s"%what)
 
 def set_bounds( self, low, high ):
- v1 = self._path.vertices[:] # copy
- assert v1.shape == (2,2), 'unexpected vertices shape'
- if self.spine_type in ['left','right']:
- v1[0,1] = low
- v1[1,1] = high
- elif self.spine_type in ['bottom','top']:
- v1[0,0] = low
- v1[1,0] = high
- else:
- raise ValueError('unable to set bounds for spine "%s"'%spine_type)
- self._path.vertices = v1 # replace
+ if self.spine_type == 'circle':
+ raise ValueError(
+ 'set_bounds() method incompatible with circular spines')
+ self._bounds = (low, high)
 
 @classmethod
 def linear_spine(cls, axes, spine_type, **kwargs):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8046
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8046&view=rev
Author: astraw
Date: 2009年12月21日 00:47:49 +0000 (2009年12月21日)
Log Message:
-----------
spines: limit range in example
Modified Paths:
--------------
 trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py
Modified: trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py	2009年12月21日 00:47:22 UTC (rev 8045)
+++ trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py	2009年12月21日 00:47:49 UTC (rev 8046)
@@ -143,4 +143,7 @@
 for artist in (line1,line2):
 artist.set_clip_on(False)
 
+# adjust spine to be within ticks
+ax.spines['left'].set_bounds( -1, 1 )
+
 show()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <as...@us...> - 2009年12月21日 00:47:31
Revision: 8045
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8045&view=rev
Author: astraw
Date: 2009年12月21日 00:47:22 +0000 (2009年12月21日)
Log Message:
-----------
spines: be clear about meaning of location vertices
Modified Paths:
--------------
 trunk/matplotlib/lib/matplotlib/spines.py
Modified: trunk/matplotlib/lib/matplotlib/spines.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/spines.py	2009年12月21日 00:46:59 UTC (rev 8044)
+++ trunk/matplotlib/lib/matplotlib/spines.py	2009年12月21日 00:47:22 UTC (rev 8045)
@@ -297,14 +297,15 @@
 """
 (staticmethod) Returns a linear :class:`Spine`.
 """
+ # all values of 13 get replaced upon call to set_bounds()
 if spine_type=='left':
- path = mpath.Path([(0.0, 0.0), (0.0, 1.0)])
+ path = mpath.Path([(0.0, 13), (0.0, 13)])
 elif spine_type=='right':
- path = mpath.Path([(1.0, 0.0), (1.0, 1.0)])
+ path = mpath.Path([(1.0, 13), (1.0, 13)])
 elif spine_type=='bottom':
- path = mpath.Path([(0.0, 0.0), (1.0, 0.0)])
+ path = mpath.Path([(13, 0.0), (13, 0.0)])
 elif spine_type=='top':
- path = mpath.Path([(0.0, 1.0), (1.0, 1.0)])
+ path = mpath.Path([(13, 1.0), (13, 1.0)])
 else:
 raise ValueError('unable to make path for spine "%s"'%spine_type)
 result = cls(axes,spine_type,path,**kwargs)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <as...@us...> - 2009年12月21日 00:47:06
Revision: 8044
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8044&view=rev
Author: astraw
Date: 2009年12月21日 00:46:59 +0000 (2009年12月21日)
Log Message:
-----------
spines: default transform is in data units, add set_bounds() call
Modified Paths:
--------------
 trunk/matplotlib/CHANGELOG
 trunk/matplotlib/lib/matplotlib/axes.py
 trunk/matplotlib/lib/matplotlib/spines.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG	2009年12月21日 00:46:30 UTC (rev 8043)
+++ trunk/matplotlib/CHANGELOG	2009年12月21日 00:46:59 UTC (rev 8044)
@@ -1,3 +1,6 @@
+2009年12月20日 spines: put spines in data coordinates, add set_bounds()
+ call. -ADS
+
 2009年12月18日 Don't limit notch size in boxplot to q1-q3 range, as this
 is effectively making the data look better than it is. - ADS
 
Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py	2009年12月21日 00:46:30 UTC (rev 8043)
+++ trunk/matplotlib/lib/matplotlib/axes.py	2009年12月21日 00:46:59 UTC (rev 8044)
@@ -2065,6 +2065,9 @@
 other.figure.canvas is not None):
 other.figure.canvas.draw_idle()
 
+ for loc in ('bottom','top'):
+ self.spines[loc].set_bounds(xmin,xmax)
+
 return xmin, xmax
 
 def get_xscale(self):
@@ -2238,6 +2241,10 @@
 if (other.figure != self.figure and
 other.figure.canvas is not None):
 other.figure.canvas.draw_idle()
+
+ for loc in ('left','right'):
+ self.spines[loc].set_bounds(ymin,ymax)
+
 return ymin, ymax
 
 def get_yscale(self):
Modified: trunk/matplotlib/lib/matplotlib/spines.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/spines.py	2009年12月21日 00:46:30 UTC (rev 8043)
+++ trunk/matplotlib/lib/matplotlib/spines.py	2009年12月21日 00:46:59 UTC (rev 8044)
@@ -55,7 +55,7 @@
 self.axis = None
 
 self.set_zorder(2.5)
- self.set_transform(self.axes.transAxes) # default transform
+ self.set_transform(self.axes.transData) # default transform
 
 # Defer initial position determination. (Not much support for
 # non-rectangular axes is currently implemented, and this lets
@@ -82,6 +82,7 @@
 self._width = radius*2
 self._height = radius*2
 self._angle = 0
+ self.set_transform(self.axes.transAxes) # circle drawn on axes transform
 
 def set_patch_line(self):
 """set the spine to be linear"""
@@ -229,9 +230,9 @@
 t = self.get_spine_transform()
 if self.spine_type in ['left','right']:
 t2 = mtransforms.blended_transform_factory(t,
- self.axes.transAxes)
+ self.axes.transData)
 elif self.spine_type in ['bottom','top']:
- t2 = mtransforms.blended_transform_factory(self.axes.transAxes,
+ t2 = mtransforms.blended_transform_factory(self.axes.transData,
 t)
 self.set_transform(t2)
 
@@ -278,6 +279,19 @@
 else:
 raise ValueError("unknown spine_transform type: %s"%what)
 
+ def set_bounds( self, low, high ):
+ v1 = self._path.vertices[:] # copy
+ assert v1.shape == (2,2), 'unexpected vertices shape'
+ if self.spine_type in ['left','right']:
+ v1[0,1] = low
+ v1[1,1] = high
+ elif self.spine_type in ['bottom','top']:
+ v1[0,0] = low
+ v1[1,0] = high
+ else:
+ raise ValueError('unable to set bounds for spine "%s"'%spine_type)
+ self._path.vertices = v1 # replace
+
 @classmethod
 def linear_spine(cls, axes, spine_type, **kwargs):
 """
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <as...@us...> - 2009年12月21日 00:46:38
Revision: 8043
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8043&view=rev
Author: astraw
Date: 2009年12月21日 00:46:30 +0000 (2009年12月21日)
Log Message:
-----------
spines: simplify code
Modified Paths:
--------------
 trunk/matplotlib/lib/matplotlib/spines.py
Modified: trunk/matplotlib/lib/matplotlib/spines.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/spines.py	2009年12月21日 00:45:55 UTC (rev 8042)
+++ trunk/matplotlib/lib/matplotlib/spines.py	2009年12月21日 00:46:30 UTC (rev 8043)
@@ -250,14 +250,12 @@
 
 if what == 'data':
 # special case data based spine locations
+ data_xform = self.axes.transScale + \
+ (how+self.axes.transLimits + self.axes.transAxes)
 if self.spine_type in ['left','right']:
- data_xform = self.axes.transScale + \
- (how+self.axes.transLimits + self.axes.transAxes)
 result = mtransforms.blended_transform_factory(
 data_xform,self.axes.transData)
 elif self.spine_type in ['top','bottom']:
- data_xform = self.axes.transScale + \
- (how+self.axes.transLimits + self.axes.transAxes)
 result = mtransforms.blended_transform_factory(
 self.axes.transData,data_xform)
 else:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8042
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8042&view=rev
Author: astraw
Date: 2009年12月21日 00:45:55 +0000 (2009年12月21日)
Log Message:
-----------
spines: new example
Modified Paths:
--------------
 trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py
Modified: trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py	2009年12月20日 08:03:40 UTC (rev 8041)
+++ trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py	2009年12月21日 00:45:55 UTC (rev 8042)
@@ -113,4 +113,34 @@
 ax.plot(x,y)
 adjust_spines(ax,['bottom'])
 
+# ----------------------------------------------------
+
+fig = plt.figure()
+
+x = np.linspace(0,2*np.pi,50)
+y = np.sin(x)
+y2 = y + 0.1*np.random.normal( size=x.shape )
+
+# plot data
+ax = fig.add_subplot(1,1,1)
+line1,=ax.plot(x,y,'--')
+line2,=ax.plot(x,y2,'bo')
+
+# adjust the spines
+adjust_spines(ax,['left','bottom'])
+
+# set ticks and tick labels
+# x
+ax.set_xlim((0,2*np.pi))
+ax.set_xticks([0,np.pi,2*np.pi])
+pichr = unichr(0x03C0)
+ax.set_xticklabels(['0',pichr,'2 '+pichr])
+
+# y
+ax.set_yticks([-1,0,1])
+
+# disable clipping of data points by axes range
+for artist in (line1,line2):
+ artist.set_clip_on(False)
+
 show()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <he...@us...> - 2009年12月20日 08:03:50
Revision: 8041
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8041&view=rev
Author: heeres
Date: 2009年12月20日 08:03:40 +0000 (2009年12月20日)
Log Message:
-----------
mplot3d: fix axes juggle issue, fix ticks on end of axes range
Modified Paths:
--------------
 trunk/matplotlib/examples/mplot3d/polys3d_demo.py
 trunk/matplotlib/examples/mplot3d/surface3d_demo3.py
 trunk/matplotlib/lib/mpl_toolkits/mplot3d/art3d.py
 trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py
 trunk/matplotlib/lib/mpl_toolkits/mplot3d/axis3d.py
Modified: trunk/matplotlib/examples/mplot3d/polys3d_demo.py
===================================================================
--- trunk/matplotlib/examples/mplot3d/polys3d_demo.py	2009年12月18日 22:25:35 UTC (rev 8040)
+++ trunk/matplotlib/examples/mplot3d/polys3d_demo.py	2009年12月20日 08:03:40 UTC (rev 8041)
@@ -22,8 +22,11 @@
 poly.set_alpha(0.7)
 ax.add_collection3d(poly, zs=zs, zdir='y')
 
+ax.set_xlabel('X')
 ax.set_xlim3d(0, 10)
+ax.set_ylabel('Y')
 ax.set_ylim3d(-1, 4)
+ax.set_zlabel('Z')
 ax.set_zlim3d(0, 1)
 
 plt.show()
Modified: trunk/matplotlib/examples/mplot3d/surface3d_demo3.py
===================================================================
--- trunk/matplotlib/examples/mplot3d/surface3d_demo3.py	2009年12月18日 22:25:35 UTC (rev 8040)
+++ trunk/matplotlib/examples/mplot3d/surface3d_demo3.py	2009年12月20日 08:03:40 UTC (rev 8041)
@@ -23,8 +23,8 @@
 surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=colors,
 linewidth=0, antialiased=False)
 
-ax.set_zlim3d(-1.01, 1.01)
-ax.w_zaxis.set_major_locator(LinearLocator(10))
+ax.set_zlim3d(-1, 1)
+ax.w_zaxis.set_major_locator(LinearLocator(6))
 ax.w_zaxis.set_major_formatter(FormatStrFormatter('%.03f'))
 
 plt.show()
Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/art3d.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/mplot3d/art3d.py	2009年12月18日 22:25:35 UTC (rev 8040)
+++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/art3d.py	2009年12月20日 08:03:40 UTC (rev 8041)
@@ -434,9 +434,26 @@
 
 def juggle_axes(xs, ys, zs, zdir):
 """
- Reorder coordinates so that zdir
+ Reorder coordinates so that 2D xs, ys can be plotted in the plane
+ orthogonal to zdir. zdir is normally x, y or z. However, if zdir
+ starts with a '-' it is interpreted as a compensation for rotate_axes.
 """
 if zdir == 'x':
+ return zs, xs, ys
+ elif zdir == 'y':
+ return xs, zs, ys
+ elif zdir[0] == '-':
+ return rotate_axes(xs, ys, zs, zdir)
+ else:
+ return xs, ys, zs
+
+def rotate_axes(xs, ys, zs, zdir):
+ """
+ Reorder coordinates so that the axes are rotated with zdir along
+ the original z axis. Prepending the axis with a '-' does the
+ inverse transform, so zdir can be x, -x, y, -y, z or -z
+ """
+ if zdir == 'x':
 return ys, zs, xs
 elif zdir == '-x':
 return zs, xs, ys
Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py	2009年12月18日 22:25:35 UTC (rev 8040)
+++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py	2009年12月20日 08:03:40 UTC (rev 8041)
@@ -857,7 +857,7 @@
 
 had_data = self.has_data()
 
- jX, jY, jZ = art3d.juggle_axes(X, Y, Z, zdir)
+ jX, jY, jZ = art3d.rotate_axes(X, Y, Z, zdir)
 cset = Axes.contour(self, jX, jY, jZ, **kwargs)
 
 zdir = '-' + zdir
Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/axis3d.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/mplot3d/axis3d.py	2009年12月18日 22:25:35 UTC (rev 8040)
+++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/axis3d.py	2009年12月20日 08:03:40 UTC (rev 8041)
@@ -180,7 +180,7 @@
 # filter locations here so that no extra grid lines are drawn
 interval = self.get_view_interval()
 majorLocs = [loc for loc in majorLocs if \
- interval[0] < loc < interval[1]]
+ interval[0] <= loc <= interval[1]]
 self.major.formatter.set_locs(majorLocs)
 majorLabels = [self.major.formatter(val, i)
 for i, val in enumerate(majorLocs)]
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <as...@us...> - 2009年12月18日 22:25:43
Revision: 8040
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8040&view=rev
Author: astraw
Date: 2009年12月18日 22:25:35 +0000 (2009年12月18日)
Log Message:
-----------
Don't limit notch size in boxplot to q1-q3 range
Modified Paths:
--------------
 trunk/matplotlib/CHANGELOG
 trunk/matplotlib/lib/matplotlib/axes.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG	2009年12月18日 22:25:26 UTC (rev 8039)
+++ trunk/matplotlib/CHANGELOG	2009年12月18日 22:25:35 UTC (rev 8040)
@@ -1,3 +1,6 @@
+2009年12月18日 Don't limit notch size in boxplot to q1-q3 range, as this
+ is effectively making the data look better than it is. - ADS
+
 2009年12月18日 mlab.prctile handles even-length data, such that the median
 is the mean of the two middle values. - ADS
 
Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py	2009年12月18日 22:25:26 UTC (rev 8039)
+++ trunk/matplotlib/lib/matplotlib/axes.py	2009年12月18日 22:25:35 UTC (rev 8040)
@@ -5035,10 +5035,6 @@
 else:
 notch_max = med + 1.57*iq/np.sqrt(row)
 notch_min = med - 1.57*iq/np.sqrt(row)
- if notch_max > q3:
- notch_max = q3
- if notch_min < q1:
- notch_min = q1
 # make our notched box vectors
 box_x = [box_x_min, box_x_max, box_x_max, cap_x_max, box_x_max,
 box_x_max, box_x_min, box_x_min, cap_x_min, box_x_min,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <as...@us...> - 2009年12月18日 22:25:36
Revision: 8039
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8039&view=rev
Author: astraw
Date: 2009年12月18日 22:25:26 +0000 (2009年12月18日)
Log Message:
-----------
bugfix: mlab.prctile handles even-length data
Modified Paths:
--------------
 trunk/matplotlib/CHANGELOG
 trunk/matplotlib/lib/matplotlib/mlab.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG	2009年12月18日 22:25:16 UTC (rev 8038)
+++ trunk/matplotlib/CHANGELOG	2009年12月18日 22:25:26 UTC (rev 8039)
@@ -1,3 +1,6 @@
+2009年12月18日 mlab.prctile handles even-length data, such that the median
+ is the mean of the two middle values. - ADS
+
 2009年12月15日 Add raw-image (unsampled) support for the ps backend. - JJL
 
 2009年12月14日 Add patch_artist kwarg to boxplot, but keep old default.
Modified: trunk/matplotlib/lib/matplotlib/mlab.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/mlab.py	2009年12月18日 22:25:16 UTC (rev 8038)
+++ trunk/matplotlib/lib/matplotlib/mlab.py	2009年12月18日 22:25:26 UTC (rev 8039)
@@ -904,19 +904,39 @@
 the *p* percentage point in the sequence is returned.
 """
 
+ # This implementation derived from scipy.stats.scoreatpercentile
+ def _interpolate(a, b, fraction):
+ """Returns the point at the given fraction between a and b, where
+ 'fraction' must be between 0 and 1.
+ """
+ return a + (b - a)*fraction
 
- x = np.array(x).ravel() # we need a copy
- x.sort()
- Nx = len(x)
+ scalar = True
+ if cbook.iterable(p):
+ scalar = False
+ per = np.array(p)
+ values = np.array(x).ravel() # copy
+ values.sort()
 
- if not cbook.iterable(p):
- return x[int(p*Nx/100.0)]
+ idxs = per /100. * (values.shape[0] - 1)
+ ai = idxs.astype(np.int)
+ bi = ai + 1
+ frac = idxs % 1
 
- p = np.asarray(p)* Nx/100.0
- ind = p.astype(int)
- ind = np.where(ind>=Nx, Nx-1, ind)
- return x.take(ind)
+ # handle cases where attempting to interpolate past last index
+ cond = bi >= len(values)
+ if scalar:
+ if cond:
+ ai -= 1
+ bi -= 1
+ frac += 1
+ else:
+ ai[cond] -= 1
+ bi[cond] -= 1
+ frac[cond] += 1
 
+ return _interpolate(values[ai],values[bi],frac)
+
 def prctile_rank(x, p):
 """
 Return the rank for each element in *x*, return the rank
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8038
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8038&view=rev
Author: astraw
Date: 2009年12月18日 22:25:16 +0000 (2009年12月18日)
Log Message:
-----------
tests: add unit test for prctile
Modified Paths:
--------------
 trunk/matplotlib/lib/matplotlib/tests/test_mlab.py
Modified: trunk/matplotlib/lib/matplotlib/tests/test_mlab.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/tests/test_mlab.py	2009年12月17日 19:31:21 UTC (rev 8037)
+++ trunk/matplotlib/lib/matplotlib/tests/test_mlab.py	2009年12月18日 22:25:16 UTC (rev 8038)
@@ -32,3 +32,26 @@
 
 # the bad recarray should trigger a ValueError for having ndim > 1.
 mlab.rec2csv(bad,fd)
+
+def test_prctile():
+ # test odd lengths
+ x=[1,2,3]
+ assert mlab.prctile(x,50)==np.median(x)
+
+ # test even lengths
+ x=[1,2,3,4]
+ assert mlab.prctile(x,50)==np.median(x)
+
+ # derived from email sent by jason-sage to MPL-user on 20090914
+ ob1=[1,1,2,2,1,2,4,3,2,2,2,3,4,5,6,7,8,9,7,6,4,5,5]
+ p = [0, 75, 100]
+ expected = [1, 5.5, 9]
+
+ # test vectorized
+ actual = mlab.prctile(ob1,p)
+ assert np.allclose( expected, actual )
+
+ # test scalar
+ for pi, expectedi in zip(p,expected):
+ actuali = mlab.prctile(ob1,pi)
+ assert np.allclose( expectedi, actuali )
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <lee...@us...> - 2009年12月17日 19:31:31
Revision: 8037
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8037&view=rev
Author: leejjoon
Date: 2009年12月17日 19:31:21 +0000 (2009年12月17日)
Log Message:
-----------
draw_image api to use an arbitrary affine transform
Modified Paths:
--------------
 trunk/matplotlib/lib/matplotlib/backends/backend_ps.py
 trunk/matplotlib/lib/matplotlib/image.py
Modified: trunk/matplotlib/lib/matplotlib/backends/backend_ps.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/backends/backend_ps.py	2009年12月16日 19:21:44 UTC (rev 8036)
+++ trunk/matplotlib/lib/matplotlib/backends/backend_ps.py	2009年12月17日 19:31:21 UTC (rev 8037)
@@ -386,14 +386,15 @@
 """
 return True
 
- def draw_image(self, gc, x, y, im, sx=None, sy=None):
+ def draw_image(self, gc, x, y, im, dx=None, dy=None, transform=None):
 """
 Draw the Image instance into the current axes; x is the
 distance in pixels from the left hand side of the canvas and y
 is the distance from bottom
 
- bbox is a matplotlib.transforms.BBox instance for clipping, or
- None
+ dx, dy is the width and height of the image. If a transform
+ (which must be an affine transform) is given, x, y, dx, dy are
+ interpreted as the coordinate of the transform.
 """
 
 im.flipud_out()
@@ -406,13 +407,22 @@
 imagecmd = "false 3 colorimage"
 hexlines = '\n'.join(self._hex_lines(bits))
 
- if sx is None:
- sx = 1./self.image_magnification
- if sy is None:
- sy = 1./self.image_magnification
- 
- xscale, yscale = (w*sx, h*sy)
- 
+ if dx is None:
+ xscale = w / self.image_magnification
+ else:
+ xscale = dx
+
+ if dy is None:
+ yscale = h/self.image_magnification
+ else:
+ yscale = dy
+
+
+ if transform is None:
+ matrix = "1 0 0 1 0 0"
+ else:
+ matrix = " ".join(map(str, transform.to_values()))
+
 figh = self.height*72
 #print 'values', origin, flipud, figh, h, y
 
@@ -431,6 +441,7 @@
 #y = figh-(y+h)
 ps = """gsave
 %(clip)s
+[%(matrix)s] concat
 %(x)s %(y)s translate
 %(xscale)s %(yscale)s scale
 /DataString %(w)s string def
Modified: trunk/matplotlib/lib/matplotlib/image.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/image.py	2009年12月16日 19:21:44 UTC (rev 8036)
+++ trunk/matplotlib/lib/matplotlib/image.py	2009年12月17日 19:31:21 UTC (rev 8037)
@@ -144,7 +144,7 @@
 sy = dyintv/viewlim.height
 numrows, numcols = A.shape[:2]
 if sx > 2:
- x0 = (viewim.x0-xmin)/dxintv * numcols
+ x0 = (viewlim.x0-xmin)/dxintv * numcols
 ix0 = max(0, int(x0 - self._filterrad))
 x1 = (viewlim.x1-xmin)/dxintv * numcols
 ix1 = min(numcols, int(x1 + self._filterrad))
@@ -170,7 +170,7 @@
 ymin = ymin_old + iy0*dyintv/numrows
 ymax = ymin_old + iy1*dyintv/numrows
 dyintv = ymax - ymin
- sy = dyintv/self.axes.viewLim.height
+ sy = dyintv/viewlim.height
 else:
 yslice = slice(0, numrows)
 
@@ -203,7 +203,7 @@
 
 return im, xmin, ymin, dxintv, dyintv, sx, sy
 
- 
+
 def _draw_unsampled_image(self, renderer, gc):
 """
 draw unsampled image. The renderer should support a draw_image method
@@ -213,10 +213,6 @@
 self._get_unsampled_image(self._A, self.get_extent(), self.axes.viewLim)
 
 if im is None: return # I'm not if this check is required. -JJL
- 
- transData = self.axes.transData
- xx1, yy1 = transData.transform_point((xmin, ymin))
- xx2, yy2 = transData.transform_point((xmin+dxintv, ymin+dyintv))
 
 fc = self.axes.patch.get_facecolor()
 bg = mcolors.colorConverter.to_rgba(fc, 0)
@@ -228,19 +224,23 @@
 
 im.resize(numcols, numrows) # just to create im.bufOut that is required by backends. There may be better solution -JJL
 
- sx = (xx2-xx1)/numcols
- sy = (yy2-yy1)/numrows
 im._url = self.get_url()
- renderer.draw_image(gc, xx1, yy1, im, sx, sy)
 
- 
+ trans = self.get_transform() #axes.transData
+ xx1, yy1 = trans.transform_non_affine((xmin, ymin))
+ xx2, yy2 = trans.transform_non_affine((xmin+dxintv, ymin+dyintv))
+
+ renderer.draw_image(gc, xx1, yy1, im, xx2-xx1, yy2-yy1,
+ trans.get_affine())
+
+
 def _check_unsampled_image(self, renderer):
 """
 return True if the image is better to be drawn unsampled.
 The derived class needs to override it.
 """
 return False
- 
+
 @allow_rasterization
 def draw(self, renderer, *args, **kwargs):
 if not self.get_visible(): return
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8036
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8036&view=rev
Author: jdh2358
Date: 2009年12月16日 19:21:44 +0000 (2009年12月16日)
Log Message:
-----------
add mpl book to index sidebar
Modified Paths:
--------------
 branches/v0_99_maint/doc/_templates/indexsidebar.html
Modified: branches/v0_99_maint/doc/_templates/indexsidebar.html
===================================================================
--- branches/v0_99_maint/doc/_templates/indexsidebar.html	2009年12月16日 01:22:41 UTC (rev 8035)
+++ branches/v0_99_maint/doc/_templates/indexsidebar.html	2009年12月16日 19:21:44 UTC (rev 8036)
@@ -8,6 +8,12 @@
 pathto('users/installing') }}">installing</a>
 </p>
 
+<p>Sandro Tosi has a new book 
+<a href="http://www.packtpub.com/matplotlib-python-development/book">Matplotlib for python
+developers</a>
+also
+at <a href="http://www.amazon.com/Matplotlib-Python-Developers-Sandro-Tosi/dp/1847197906">amazon</a>.</p>
+
 <p>Build websites like matplotlib's,
 with <a href="http://sphinx.pocoo.org/">sphinx</a> and extensions for
 mpl plots, math, inheritance diagrams -- try
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <lee...@us...> - 2009年12月16日 01:22:52
Revision: 8035
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8035&view=rev
Author: leejjoon
Date: 2009年12月16日 01:22:41 +0000 (2009年12月16日)
Log Message:
-----------
support unsampled image for ps backend
Modified Paths:
--------------
 trunk/matplotlib/CHANGELOG
 trunk/matplotlib/lib/matplotlib/backend_bases.py
 trunk/matplotlib/lib/matplotlib/backends/backend_mixed.py
 trunk/matplotlib/lib/matplotlib/backends/backend_ps.py
 trunk/matplotlib/lib/matplotlib/image.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG	2009年12月15日 02:57:46 UTC (rev 8034)
+++ trunk/matplotlib/CHANGELOG	2009年12月16日 01:22:41 UTC (rev 8035)
@@ -1,3 +1,5 @@
+2009年12月15日 Add raw-image (unsampled) support for the ps backend. - JJL
+
 2009年12月14日 Add patch_artist kwarg to boxplot, but keep old default.
 Convert boxplot_demo2.py to use the new patch_artist. - ADS
 
Modified: trunk/matplotlib/lib/matplotlib/backend_bases.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/backend_bases.py	2009年12月15日 02:57:46 UTC (rev 8034)
+++ trunk/matplotlib/lib/matplotlib/backend_bases.py	2009年12月16日 01:22:41 UTC (rev 8035)
@@ -340,6 +340,13 @@
 """
 return False
 
+ def option_scale_image(self):
+ """
+ override this method for renderers that support arbitrary
+ scaling of image (most of the vector backend).
+ """
+ return False
+
 def draw_tex(self, gc, x, y, s, prop, angle, ismath='TeX!'):
 """
 """
Modified: trunk/matplotlib/lib/matplotlib/backends/backend_mixed.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/backends/backend_mixed.py	2009年12月15日 02:57:46 UTC (rev 8034)
+++ trunk/matplotlib/lib/matplotlib/backends/backend_mixed.py	2009年12月16日 01:22:41 UTC (rev 8035)
@@ -59,7 +59,7 @@
 get_texmanager get_text_width_height_descent new_gc open_group
 option_image_nocomposite points_to_pixels strip_math
 start_filter stop_filter draw_gouraud_triangle
- draw_gouraud_triangles
+ draw_gouraud_triangles option_scale_image
 """.split()
 def _set_current_renderer(self, renderer):
 self._renderer = renderer
Modified: trunk/matplotlib/lib/matplotlib/backends/backend_ps.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/backends/backend_ps.py	2009年12月15日 02:57:46 UTC (rev 8034)
+++ trunk/matplotlib/lib/matplotlib/backends/backend_ps.py	2009年12月16日 01:22:41 UTC (rev 8035)
@@ -380,8 +380,14 @@
 """
 return self.image_magnification
 
- def draw_image(self, gc, x, y, im):
+ def option_scale_image(self):
 """
+ ps backend support arbitrary scaling of image.
+ """
+ return True
+
+ def draw_image(self, gc, x, y, im, sx=None, sy=None):
+ """
 Draw the Image instance into the current axes; x is the
 distance in pixels from the left hand side of the canvas and y
 is the distance from bottom
@@ -400,9 +406,13 @@
 imagecmd = "false 3 colorimage"
 hexlines = '\n'.join(self._hex_lines(bits))
 
- xscale, yscale = (
- w/self.image_magnification, h/self.image_magnification)
-
+ if sx is None:
+ sx = 1./self.image_magnification
+ if sy is None:
+ sy = 1./self.image_magnification
+ 
+ xscale, yscale = (w*sx, h*sy)
+ 
 figh = self.height*72
 #print 'values', origin, flipud, figh, h, y
 
Modified: trunk/matplotlib/lib/matplotlib/image.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/image.py	2009年12月15日 02:57:46 UTC (rev 8034)
+++ trunk/matplotlib/lib/matplotlib/image.py	2009年12月16日 01:22:41 UTC (rev 8035)
@@ -127,21 +127,140 @@
 def make_image(self, magnification=1.0):
 raise RuntimeError('The make_image method must be overridden.')
 
+
+ def _get_unsampled_image(self, A, image_extents, viewlim):
+ """
+ convert numpy array A with given extents ([x1, x2, y1, y2] in
+ data coordinate) into the Image, given the vielim (should be a
+ bbox instance). Image will be clipped if the extents is
+ significantly larger than the viewlim.
+ """
+ xmin, xmax, ymin, ymax = image_extents
+ dxintv = xmax-xmin
+ dyintv = ymax-ymin
+
+ # the viewport scale factor
+ sx = dxintv/viewlim.width
+ sy = dyintv/viewlim.height
+ numrows, numcols = A.shape[:2]
+ if sx > 2:
+ x0 = (viewim.x0-xmin)/dxintv * numcols
+ ix0 = max(0, int(x0 - self._filterrad))
+ x1 = (viewlim.x1-xmin)/dxintv * numcols
+ ix1 = min(numcols, int(x1 + self._filterrad))
+ xslice = slice(ix0, ix1)
+ xmin_old = xmin
+ xmin = xmin_old + ix0*dxintv/numcols
+ xmax = xmin_old + ix1*dxintv/numcols
+ dxintv = xmax - xmin
+ sx = dxintv/viewlim.width
+ else:
+ xslice = slice(0, numcols)
+
+ if sy > 2:
+ y0 = (viewlim.y0-ymin)/dyintv * numrows
+ iy0 = max(0, int(y0 - self._filterrad))
+ y1 = (viewlim.y1-ymin)/dyintv * numrows
+ iy1 = min(numrows, int(y1 + self._filterrad))
+ if self.origin == 'upper':
+ yslice = slice(numrows-iy1, numrows-iy0)
+ else:
+ yslice = slice(iy0, iy1)
+ ymin_old = ymin
+ ymin = ymin_old + iy0*dyintv/numrows
+ ymax = ymin_old + iy1*dyintv/numrows
+ dyintv = ymax - ymin
+ sy = dyintv/self.axes.viewLim.height
+ else:
+ yslice = slice(0, numrows)
+
+ if xslice != self._oldxslice or yslice != self._oldyslice:
+ self._imcache = None
+ self._oldxslice = xslice
+ self._oldyslice = yslice
+
+ if self._imcache is None:
+ if self._A.dtype == np.uint8 and len(self._A.shape) == 3:
+ im = _image.frombyte(self._A[yslice,xslice,:], 0)
+ im.is_grayscale = False
+ else:
+ if self._rgbacache is None:
+ x = self.to_rgba(self._A, self._alpha)
+ self._rgbacache = x
+ else:
+ x = self._rgbacache
+ im = _image.fromarray(x[yslice,xslice], 0)
+ if len(self._A.shape) == 2:
+ im.is_grayscale = self.cmap.is_gray()
+ else:
+ im.is_grayscale = False
+ self._imcache = im
+
+ if self.origin=='upper':
+ im.flipud_in()
+ else:
+ im = self._imcache
+
+ return im, xmin, ymin, dxintv, dyintv, sx, sy
+
+ 
+ def _draw_unsampled_image(self, renderer, gc):
+ """
+ draw unsampled image. The renderer should support a draw_image method
+ with scale parameter.
+ """
+ im, xmin, ymin, dxintv, dyintv, sx, sy = \
+ self._get_unsampled_image(self._A, self.get_extent(), self.axes.viewLim)
+
+ if im is None: return # I'm not if this check is required. -JJL
+ 
+ transData = self.axes.transData
+ xx1, yy1 = transData.transform_point((xmin, ymin))
+ xx2, yy2 = transData.transform_point((xmin+dxintv, ymin+dyintv))
+
+ fc = self.axes.patch.get_facecolor()
+ bg = mcolors.colorConverter.to_rgba(fc, 0)
+ im.set_bg( *bg)
+
+ # image input dimensions
+ im.reset_matrix()
+ numrows, numcols = im.get_size()
+
+ im.resize(numcols, numrows) # just to create im.bufOut that is required by backends. There may be better solution -JJL
+
+ sx = (xx2-xx1)/numcols
+ sy = (yy2-yy1)/numrows
+ im._url = self.get_url()
+ renderer.draw_image(gc, xx1, yy1, im, sx, sy)
+
+ 
+ def _check_unsampled_image(self, renderer):
+ """
+ return True if the image is better to be drawn unsampled.
+ The derived class needs to override it.
+ """
+ return False
+ 
 @allow_rasterization
 def draw(self, renderer, *args, **kwargs):
 if not self.get_visible(): return
 if (self.axes.get_xscale() != 'linear' or
 self.axes.get_yscale() != 'linear'):
 warnings.warn("Images are not supported on non-linear axes.")
- im = self.make_image(renderer.get_image_magnification())
- if im is None:
- return
- im._url = self.get_url()
+
 l, b, widthDisplay, heightDisplay = self.axes.bbox.bounds
 gc = renderer.new_gc()
 gc.set_clip_rectangle(self.axes.bbox.frozen())
 gc.set_clip_path(self.get_clip_path())
- renderer.draw_image(gc, l, b, im)
+
+ if self._check_unsampled_image(renderer):
+ self._draw_unsampled_image(renderer, gc)
+ else:
+ im = self.make_image(renderer.get_image_magnification())
+ if im is None:
+ return
+ im._url = self.get_url()
+ renderer.draw_image(gc, l, b, im)
 gc.restore()
 
 def contains(self, mouseevent):
@@ -338,72 +457,9 @@
 if self._A is None:
 raise RuntimeError('You must first set the image array or the image attribute')
 
- xmin, xmax, ymin, ymax = self.get_extent()
- dxintv = xmax-xmin
- dyintv = ymax-ymin
+ im, xmin, ymin, dxintv, dyintv, sx, sy = \
+ self._get_unsampled_image(self._A, self.get_extent(), self.axes.viewLim)
 
- # the viewport scale factor
- sx = dxintv/self.axes.viewLim.width
- sy = dyintv/self.axes.viewLim.height
- numrows, numcols = self._A.shape[:2]
- if sx > 2:
- x0 = (self.axes.viewLim.x0-xmin)/dxintv * numcols
- ix0 = max(0, int(x0 - self._filterrad))
- x1 = (self.axes.viewLim.x1-xmin)/dxintv * numcols
- ix1 = min(numcols, int(x1 + self._filterrad))
- xslice = slice(ix0, ix1)
- xmin_old = xmin
- xmin = xmin_old + ix0*dxintv/numcols
- xmax = xmin_old + ix1*dxintv/numcols
- dxintv = xmax - xmin
- sx = dxintv/self.axes.viewLim.width
- else:
- xslice = slice(0, numcols)
-
- if sy > 2:
- y0 = (self.axes.viewLim.y0-ymin)/dyintv * numrows
- iy0 = max(0, int(y0 - self._filterrad))
- y1 = (self.axes.viewLim.y1-ymin)/dyintv * numrows
- iy1 = min(numrows, int(y1 + self._filterrad))
- if self.origin == 'upper':
- yslice = slice(numrows-iy1, numrows-iy0)
- else:
- yslice = slice(iy0, iy1)
- ymin_old = ymin
- ymin = ymin_old + iy0*dyintv/numrows
- ymax = ymin_old + iy1*dyintv/numrows
- dyintv = ymax - ymin
- sy = dyintv/self.axes.viewLim.height
- else:
- yslice = slice(0, numrows)
-
- if xslice != self._oldxslice or yslice != self._oldyslice:
- self._imcache = None
- self._oldxslice = xslice
- self._oldyslice = yslice
-
- if self._imcache is None:
- if self._A.dtype == np.uint8 and len(self._A.shape) == 3:
- im = _image.frombyte(self._A[yslice,xslice,:], 0)
- im.is_grayscale = False
- else:
- if self._rgbacache is None:
- x = self.to_rgba(self._A, self._alpha)
- self._rgbacache = x
- else:
- x = self._rgbacache
- im = _image.fromarray(x[yslice,xslice], 0)
- if len(self._A.shape) == 2:
- im.is_grayscale = self.cmap.is_gray()
- else:
- im.is_grayscale = False
- self._imcache = im
-
- if self.origin=='upper':
- im.flipud_in()
- else:
- im = self._imcache
-
 fc = self.axes.patch.get_facecolor()
 bg = mcolors.colorConverter.to_rgba(fc, 0)
 im.set_bg( *bg)
@@ -435,6 +491,15 @@
 return im
 
 
+ def _check_unsampled_image(self, renderer):
+ """
+ return True if the image is better to be drawn unsampled.
+ """
+ if renderer.option_scale_image() and self.get_interpolation() == "nearest":
+ return True
+ else:
+ return False
+
 def set_extent(self, extent):
 """
 extent is data axes (left, right, bottom, top) for making image plots
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

Showing results of 66

1 2 3 > >> (Page 1 of 3)
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /