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
|
|
From: <lee...@us...> - 2009-05-29 03:52:40
|
Revision: 7162
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7162&view=rev
Author: leejjoon
Date: 2009-05-29 03:52:32 +0000 (Fri, 29 May 2009)
Log Message:
-----------
Fix axes_grid toolkit to work with the spine patch
Modified Paths:
--------------
trunk/matplotlib/CHANGELOG
trunk/matplotlib/lib/mpl_toolkits/axes_grid/axislines.py
trunk/matplotlib/lib/mpl_toolkits/axes_grid/parasite_axes.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG 2009-05-29 02:33:06 UTC (rev 7161)
+++ trunk/matplotlib/CHANGELOG 2009-05-29 03:52:32 UTC (rev 7162)
@@ -1,4 +1,6 @@
-2009-05-28 Applied fbianco's patch to handle scroll wheel events in
+2009-05-28 Fix axes_grid toolkit to work with spine patch by ADS. - JJL
+
+2009-05-28 Applied fbianco's patch to handle scroll wheel events in
the qt4 backend - DSD
2009-05-26 Add support for "axis spines" to have arbitrary location. -ADS
Modified: trunk/matplotlib/lib/mpl_toolkits/axes_grid/axislines.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/axes_grid/axislines.py 2009-05-29 02:33:06 UTC (rev 7161)
+++ trunk/matplotlib/lib/mpl_toolkits/axes_grid/axislines.py 2009-05-29 03:52:32 UTC (rev 7162)
@@ -1249,12 +1249,16 @@
b = not self._axisline_on
if b:
self._axisline_on = True
- self.frame.set_visible(False)
+ #self.frame.set_visible(False)
+ for s in self.spines.values():
+ s.artist.set_visible(False)
self.xaxis.set_visible(False)
self.yaxis.set_visible(False)
else:
self._axisline_on = False
- self.frame.set_visible(True)
+ #self.frame.set_visible(True)
+ for s in self.spines.values():
+ s.artist.set_visible(True)
self.xaxis.set_visible(True)
self.yaxis.set_visible(True)
Modified: trunk/matplotlib/lib/mpl_toolkits/axes_grid/parasite_axes.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/axes_grid/parasite_axes.py 2009-05-29 02:33:06 UTC (rev 7161)
+++ trunk/matplotlib/lib/mpl_toolkits/axes_grid/parasite_axes.py 2009-05-29 03:52:32 UTC (rev 7162)
@@ -48,14 +48,15 @@
class ParasiteAxesAuxTrans(ParasiteAxes):
- def __init__(self, parent_axes, aux_transform, viewlim_mode=None):
+ def __init__(self, parent_axes, aux_transform, viewlim_mode=None,
+ **kwargs):
self.transAux = aux_transform
#self._viewlim_mode = viewlim_mode
self.set_viewlim_mode(viewlim_mode)
- super(ParasiteAxesAuxTrans, self).__init__(parent_axes)
+ super(ParasiteAxesAuxTrans, self).__init__(parent_axes, **kwargs)
def _set_lim_and_transforms(self):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jd...@us...> - 2009-05-29 03:43:58
|
Revision: 7161
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7161&view=rev
Author: jdh2358
Date: 2009-05-29 02:33:06 +0000 (Fri, 29 May 2009)
Log Message:
-----------
add toolkits plot dirs to website
Modified Paths:
--------------
trunk/matplotlib/doc/sphinxext/gen_gallery.py
trunk/matplotlib/doc/sphinxext/gen_rst.py
Modified: trunk/matplotlib/doc/sphinxext/gen_gallery.py
===================================================================
--- trunk/matplotlib/doc/sphinxext/gen_gallery.py 2009-05-29 02:08:15 UTC (rev 7160)
+++ trunk/matplotlib/doc/sphinxext/gen_gallery.py 2009-05-29 02:33:06 UTC (rev 7161)
@@ -38,7 +38,7 @@
print
print "generating gallery: ",
data = []
- for subdir in ('api', 'pylab_examples', 'widgets', 'mplot3d'):
+ for subdir in ('api', 'pylab_examples', 'mplot3d', 'widgets', 'axes_grid' ):
origdir = os.path.join('build', rootdir, subdir)
thumbdir = os.path.join(outdir, rootdir, subdir, 'thumbnails')
if not os.path.exists(thumbdir):
Modified: trunk/matplotlib/doc/sphinxext/gen_rst.py
===================================================================
--- trunk/matplotlib/doc/sphinxext/gen_rst.py 2009-05-29 02:08:15 UTC (rev 7160)
+++ trunk/matplotlib/doc/sphinxext/gen_rst.py 2009-05-29 02:33:06 UTC (rev 7161)
@@ -128,7 +128,10 @@
do_plot = (subdir in ('api',
'pylab_examples',
- 'units') and
+ 'units',
+ 'mplot3d',
+ 'axes_grid',
+ ) and
not noplot_regex.search(contents))
if do_plot:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jd...@us...> - 2009-05-29 02:30:57
|
Revision: 7160
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7160&view=rev
Author: jdh2358
Date: 2009-05-29 02:08:15 +0000 (Fri, 29 May 2009)
Log Message:
-----------
added spine autodocs
Modified Paths:
--------------
trunk/matplotlib/doc/api/index.rst
trunk/matplotlib/examples/pylab_examples/axhspan_demo.py
Added Paths:
-----------
trunk/matplotlib/doc/api/spine_api.rst
Modified: trunk/matplotlib/doc/api/index.rst
===================================================================
--- trunk/matplotlib/doc/api/index.rst 2009-05-28 18:02:49 UTC (rev 7159)
+++ trunk/matplotlib/doc/api/index.rst 2009-05-29 02:08:15 UTC (rev 7160)
@@ -30,5 +30,6 @@
mlab_api.rst
path_api.rst
pyplot_api.rst
+ spine_api.rst
ticker_api.rst
index_backend_api.rst
Added: trunk/matplotlib/doc/api/spine_api.rst
===================================================================
--- trunk/matplotlib/doc/api/spine_api.rst (rev 0)
+++ trunk/matplotlib/doc/api/spine_api.rst 2009-05-29 02:08:15 UTC (rev 7160)
@@ -0,0 +1,12 @@
+*****************
+matplotlib spine
+*****************
+
+
+:mod:`matplotlib.spine`
+======================
+
+.. automodule:: matplotlib.spine
+ :members:
+ :undoc-members:
+ :show-inheritance:
Modified: trunk/matplotlib/examples/pylab_examples/axhspan_demo.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/axhspan_demo.py 2009-05-28 18:02:49 UTC (rev 7159)
+++ trunk/matplotlib/examples/pylab_examples/axhspan_demo.py 2009-05-29 02:08:15 UTC (rev 7160)
@@ -11,7 +11,7 @@
# draw a default hline at y=1 that spans the xrange
l = plt.axhline(y=1)
-# draw a default vline at x=1 that spans the xrange
+# draw a default vline at x=1 that spans the yrange
l = plt.axvline(x=1)
# draw a thick blue vline at x=0 that spans the the upper quadrant of
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sa...@us...> - 2009-05-28 18:02:54
|
Revision: 7159
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7159&view=rev
Author: sameerd
Date: 2009-05-28 18:02:49 +0000 (Thu, 28 May 2009)
Log Message:
-----------
Updated the record array helper functions to create an empty record array where necessary
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/mlab.py
Modified: trunk/matplotlib/lib/matplotlib/mlab.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/mlab.py 2009-05-28 17:50:38 UTC (rev 7158)
+++ trunk/matplotlib/lib/matplotlib/mlab.py 2009-05-28 18:02:49 UTC (rev 7159)
@@ -2047,18 +2047,6 @@
except TypeError: return False
else: return b
-def rec_view(rec):
- """
- Return a view of an ndarray as a recarray
-
- .. seealso::
-
- http://projects.scipy.org/pipermail/numpy-discussion/2008-August/036429.html
- Motivation for this function
- """
- return rec.view(np.recarray)
- #return rec.view(dtype=(np.record, rec.dtype), type=np.recarray)
-
def rec_append_field(rec, name, arr, dtype=None):
"""
Return a new record array with field name populated with data from
@@ -2094,12 +2082,12 @@
raise ValueError, "dtypes must be None, a single dtype or a list"
newdtype = np.dtype(rec.dtype.descr + zip(names, dtypes))
- newrec = np.empty(rec.shape, dtype=newdtype)
+ newrec = np.recarray(rec.shape, dtype=newdtype)
for field in rec.dtype.fields:
newrec[field] = rec[field]
for name, arr in zip(names, arrs):
newrec[name] = arr
- return rec_view(newrec)
+ return newrec
def rec_drop_fields(rec, names):
@@ -2113,11 +2101,11 @@
newdtype = np.dtype([(name, rec.dtype[name]) for name in rec.dtype.names
if name not in names])
- newrec = np.empty(Nr, dtype=newdtype)
+ newrec = np.recarray(rec.shape, dtype=newdtype)
for field in newdtype.names:
newrec[field] = rec[field]
- return rec_view(newrec)
+ return newrec
@@ -2279,7 +2267,7 @@
r2desc = [(mapped_r2field(desc[0]), desc[1]) for desc in r2.dtype.descr if desc[0] not in key]
newdtype = np.dtype(keydesc + r1desc + r2desc)
- newrec = np.empty(common_len + left_len + right_len, dtype=newdtype)
+ newrec = np.recarray((common_len + left_len + right_len,), dtype=newdtype)
if defaults is not None:
for thiskey in defaults:
@@ -2314,7 +2302,7 @@
newrec.sort(order=key)
- return rec_view(newrec)
+ return newrec
def csv2rec(fname, comments='#', skiprows=0, checkrows=0, delimiter=',',
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cm...@us...> - 2009-05-28 17:50:47
|
Revision: 7158
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7158&view=rev
Author: cmoad
Date: 2009-05-28 17:50:38 +0000 (Thu, 28 May 2009)
Log Message:
-----------
cleaned up a few typos
Modified Paths:
--------------
trunk/matplotlib/release/win32/Makefile
Modified: trunk/matplotlib/release/win32/Makefile
===================================================================
--- trunk/matplotlib/release/win32/Makefile 2009-05-28 16:49:17 UTC (rev 7157)
+++ trunk/matplotlib/release/win32/Makefile 2009-05-28 17:50:38 UTC (rev 7158)
@@ -22,9 +22,9 @@
LDFLAGS = -L${SRCDIR}/zlib-${ZLIBVERSION}
LDFLAGS += -L${SRCDIR}/libpng-${PNGVERSION}
-LDFLAGS += -L${SRCDIR}/freetype-${FREETYPEVERSION}s
+LDFLAGS += -L${SRCDIR}/freetype-${FREETYPEVERSION}
-PY_INCLUDE = "${WINSRCDIR}\\zlib-${ZLIBVERSION};${WINSRCDIR}/libpng-${PNGVERSION};${WINSRCDIR}/freetype-${FREETYPEVERSION}/include;${WINSRCDIR}/tcl${TCLTKVERSION}/generic;${WINSRCDIR}/tcl${TCLTKVERSION}/win;${WINSRCDIR}/tk${TCLTKVERSION}/generic;${WINSRCDIR}/tk${TCLTKVERSION}/win;${WINSRCDIR}/tk${TCLTKVERSION}/xlib"
+PY_INCLUDE = "${WINSRCDIR}/zlib-${ZLIBVERSION};${WINSRCDIR}/libpng-${PNGVERSION};${WINSRCDIR}/freetype-${FREETYPEVERSION}/include;${WINSRCDIR}/tcl${TCLTKVERSION}/generic;${WINSRCDIR}/tcl${TCLTKVERSION}/win;${WINSRCDIR}/tk${TCLTKVERSION}/generic;${WINSRCDIR}/tk${TCLTKVERSION}/win;${WINSRCDIR}/tk${TCLTKVERSION}/xlib"
PY_LINKER = "${WINSRCDIR}/zlib-${ZLIBVERSION};${WINSRCDIR}/libpng-${PNGVERSION};${WINSRCDIR}/freetype-${FREETYPEVERSION}"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jd...@us...> - 2009-05-28 17:20:58
|
Revision: 7152
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7152&view=rev
Author: jdh2358
Date: 2009-05-28 14:02:08 +0000 (Thu, 28 May 2009)
Log Message:
-----------
update readme w/ sdist instructions
Modified Paths:
--------------
trunk/matplotlib/release/win32/README.txt
Modified: trunk/matplotlib/release/win32/README.txt
===================================================================
--- trunk/matplotlib/release/win32/README.txt 2009-05-28 13:45:36 UTC (rev 7151)
+++ trunk/matplotlib/release/win32/README.txt 2009-05-28 14:02:08 UTC (rev 7152)
@@ -40,14 +40,20 @@
* First fetch all the dependencies::
make fetch_deps
-
+
* build the dependencies::
make dependencies
-* copy over the latest mpl *.tar.gz tarball to this directory, update
- the MPLVERSION in the Makefile::
-
+* copy over the latest mpl *.tar.gz tarball to this directory. You
+ can create the source distribution file with ::
+
+ > /c/Python26/python sdist --formats=gztar
+
+ and then copy the dist/matplotlib.VERSION.tar.gz file into the
+ directory alongside the Makefile. Update the MPLVERSION in the
+ Makefile::
+
* build the wininst binary and egg::
make installers
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2009-05-28 16:49:26
|
Revision: 7157
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7157&view=rev
Author: mdboom
Date: 2009-05-28 16:49:17 +0000 (Thu, 28 May 2009)
Log Message:
-----------
Handle overrightarrow and overleftarrow in mathtext like accents.
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/mathtext.py
Modified: trunk/matplotlib/lib/matplotlib/mathtext.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/mathtext.py 2009-05-28 16:30:12 UTC (rev 7156)
+++ trunk/matplotlib/lib/matplotlib/mathtext.py 2009-05-28 16:49:17 UTC (rev 7157)
@@ -2445,7 +2445,9 @@
r"'" : r'\combiningacuteaccent',
r'~' : r'\combiningtilde',
r'.' : r'\combiningdotabove',
- r'^' : r'\circumflexaccent'
+ r'^' : r'\circumflexaccent',
+ r'overrightarrow' : r'\rightarrow',
+ r'overleftarrow' : r'\leftarrow'
}
_wide_accents = set(r"widehat widetilde".split())
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jd...@us...> - 2009-05-28 16:30:20
|
Revision: 7156
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7156&view=rev
Author: jdh2358
Date: 2009-05-28 16:30:12 +0000 (Thu, 28 May 2009)
Log Message:
-----------
update to doc sidebar
Modified Paths:
--------------
trunk/matplotlib/doc/_templates/indexsidebar.html
Modified: trunk/matplotlib/doc/_templates/indexsidebar.html
===================================================================
--- trunk/matplotlib/doc/_templates/indexsidebar.html 2009-05-28 16:11:16 UTC (rev 7155)
+++ trunk/matplotlib/doc/_templates/indexsidebar.html 2009-05-28 16:30:12 UTC (rev 7156)
@@ -1,10 +1,20 @@
-<h3>Download</h3>
-<p>Current version: <b>{{ version }}</b></p>
+<h3>News</h3>
-<p>Nominate matplotlib for a community choice award!
+<p>Please <a href="http://sourceforge.net/project/project_donations.php?group_id=80706">donate</a>
+to support matplotlib development.</p>
+
+<p>Nominate matplotlib for a community choice award by clicking the
+image below -- suggested category "Best Project for Academia" for
+software which "helps you hit the books, analyze global trends, or
+just understand the world a little bit better than you did before":
<a href="http://sourceforge.net/community/cca09/nominate/?project_name=matplotlib&project_url=http://sourceforge.net/projects/matplotlib/"><img src="http://sourceforge.net/images/cca/cca_nominate.png" border="0"/></a>
</p>
+
+<h3>Download</h3>
+<p>Current version: <b>{{ version }}</b></p>
+
+
<p>Download matplotlib from the
sourceforge <a href="http://sourceforge.net/projects/matplotlib">project</a>
page (but first take a look at the <a href="{{
@@ -16,8 +26,6 @@
and mapping toolkit
<a href="http://matplotlib.sf.net/basemap/doc/html">basemap</a>.</p>
-<p>Please <a href="http://sourceforge.net/project/project_donations.php?group_id=80706">donate</a>
-to support matplotlib development.</p>
<h3>Need help?</h3>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ds...@us...> - 2009-05-28 16:11:21
|
Revision: 7155
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7155&view=rev
Author: dsdale
Date: 2009-05-28 16:11:16 +0000 (Thu, 28 May 2009)
Log Message:
-----------
handle scroll wheel events in Qt4 backend
Modified Paths:
--------------
trunk/matplotlib/CHANGELOG
trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG 2009-05-28 15:59:12 UTC (rev 7154)
+++ trunk/matplotlib/CHANGELOG 2009-05-28 16:11:16 UTC (rev 7155)
@@ -1,3 +1,6 @@
+2009-05-28 Applied fbianco's patch to handle scroll wheel events in
+ the qt4 backend - DSD
+
2009-05-26 Add support for "axis spines" to have arbitrary location. -ADS
2009-05-20 Add an empty matplotlibrc to the tests/ directory so that running
Modified: trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py 2009-05-28 15:59:12 UTC (rev 7154)
+++ trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py 2009-05-28 16:11:16 UTC (rev 7155)
@@ -136,6 +136,16 @@
FigureCanvasBase.button_release_event( self, x, y, button )
if DEBUG: print 'button released'
+ def wheelEvent( self, event ):
+ x = event.x()
+ # flipy so y=0 is bottom of canvas
+ y = self.figure.bbox.height - event.y()
+ # from QWheelEvent::delta doc
+ steps = event.delta()/120
+ if (event.orientation() == Qt.Qt.Vertical):
+ FigureCanvasBase.scroll_event( self, x, y, steps)
+ if DEBUG: print 'scroll event : delta = %i, steps = %i ' % (event.delta(),steps)
+
def keyPressEvent( self, event ):
key = self._get_key( event )
FigureCanvasBase.key_press_event( self, key )
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <he...@us...> - 2009-05-28 15:59:18
|
Revision: 7154
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7154&view=rev
Author: heeres
Date: 2009-05-28 15:59:12 +0000 (Thu, 28 May 2009)
Log Message:
-----------
mplot3d: add examples, fix NaN bug
Modified Paths:
--------------
trunk/matplotlib/lib/mpl_toolkits/mplot3d/__init__.py
trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py
Added Paths:
-----------
trunk/matplotlib/examples/mplot3d/contour.py
trunk/matplotlib/examples/mplot3d/contourf.py
trunk/matplotlib/examples/mplot3d/polys.py
trunk/matplotlib/examples/mplot3d/scatter.py
trunk/matplotlib/examples/mplot3d/surface.py
trunk/matplotlib/examples/mplot3d/wire.py
Added: trunk/matplotlib/examples/mplot3d/contour.py
===================================================================
--- trunk/matplotlib/examples/mplot3d/contour.py (rev 0)
+++ trunk/matplotlib/examples/mplot3d/contour.py 2009-05-28 15:59:12 UTC (rev 7154)
@@ -0,0 +1,12 @@
+from mpl_toolkits.mplot3d import axes3d
+import pylab
+import random
+
+fig = pylab.figure()
+ax = axes3d.Axes3D(fig)
+X, Y, Z = axes3d.get_test_data(0.05)
+cset = ax.contour3D(X, Y, Z)
+ax.clabel(cset, fontsize=9, inline=1)
+
+pylab.show()
+
Added: trunk/matplotlib/examples/mplot3d/contourf.py
===================================================================
--- trunk/matplotlib/examples/mplot3d/contourf.py (rev 0)
+++ trunk/matplotlib/examples/mplot3d/contourf.py 2009-05-28 15:59:12 UTC (rev 7154)
@@ -0,0 +1,12 @@
+from mpl_toolkits.mplot3d import axes3d
+import pylab
+import random
+
+fig = pylab.figure()
+ax = axes3d.Axes3D(fig)
+X, Y, Z = axes3d.get_test_data(0.05)
+cset = ax.contourf3D(X, Y, Z)
+ax.clabel(cset, fontsize=9, inline=1)
+
+pylab.show()
+
Added: trunk/matplotlib/examples/mplot3d/polys.py
===================================================================
--- trunk/matplotlib/examples/mplot3d/polys.py (rev 0)
+++ trunk/matplotlib/examples/mplot3d/polys.py 2009-05-28 15:59:12 UTC (rev 7154)
@@ -0,0 +1,31 @@
+from mpl_toolkits.mplot3d import Axes3D
+from matplotlib.collections import PolyCollection
+from matplotlib.colors import colorConverter
+import pylab
+import random
+import numpy as np
+
+fig = pylab.figure()
+ax = Axes3D(fig)
+
+cc = lambda arg: colorConverter.to_rgba(arg, alpha=0.6)
+
+xs = np.arange(0, 10, 0.4)
+verts = []
+zs = [0.0, 1.0, 2.0, 3.0]
+for z in zs:
+ ys = [random.random() for x in xs]
+ ys[0], ys[-1] = 0, 0
+ verts.append(zip(xs, ys))
+
+poly = PolyCollection(verts, facecolors = [cc('r'), cc('g'), cc('b'),
+ cc('y')])
+poly.set_alpha(0.7)
+ax.add_collection(poly, zs=zs, dir='y')
+
+ax.set_xlim(0, 10)
+ax.set_ylim(-1, 4)
+ax.set_zlim(0, 1)
+
+pylab.show()
+
Added: trunk/matplotlib/examples/mplot3d/scatter.py
===================================================================
--- trunk/matplotlib/examples/mplot3d/scatter.py (rev 0)
+++ trunk/matplotlib/examples/mplot3d/scatter.py 2009-05-28 15:59:12 UTC (rev 7154)
@@ -0,0 +1,21 @@
+from mpl_toolkits.mplot3d import Axes3D
+import pylab
+import random
+
+fig = pylab.figure()
+ax = Axes3D(fig)
+n = 100
+for c, zl, zh in [('r', -50, -25), ('b', -30, -5)]:
+ xs, ys, zs = zip(*
+ [(random.randrange(23, 32),
+ random.randrange(100),
+ random.randrange(zl, zh)
+ ) for i in range(n)])
+ ax.scatter3D(xs, ys, zs, c=c)
+
+ax.set_xlabel('X Label')
+ax.set_ylabel('Y Label')
+ax.set_zlabel('Z Label')
+
+pylab.show()
+
Added: trunk/matplotlib/examples/mplot3d/surface.py
===================================================================
--- trunk/matplotlib/examples/mplot3d/surface.py (rev 0)
+++ trunk/matplotlib/examples/mplot3d/surface.py 2009-05-28 15:59:12 UTC (rev 7154)
@@ -0,0 +1,16 @@
+from mpl_toolkits.mplot3d import Axes3D
+import pylab
+import random
+import numpy as np
+
+fig = pylab.figure()
+ax = Axes3D(fig)
+X = np.arange(-5, 5, 0.5)
+Y = np.arange(-5, 5, 0.5)
+X, Y = np.meshgrid(X, Y)
+R = np.sqrt(X**2 + Y**2)
+Z = np.sin(R)
+ax.plot_surface(X, Y, Z, rstride=1, cstride=1, color='forestgreen')
+
+pylab.show()
+
Added: trunk/matplotlib/examples/mplot3d/wire.py
===================================================================
--- trunk/matplotlib/examples/mplot3d/wire.py (rev 0)
+++ trunk/matplotlib/examples/mplot3d/wire.py 2009-05-28 15:59:12 UTC (rev 7154)
@@ -0,0 +1,12 @@
+from mpl_toolkits.mplot3d import axes3d
+import pylab
+import random
+import numpy as np
+
+fig = pylab.figure()
+ax = axes3d.Axes3D(fig)
+X, Y, Z = axes3d.get_test_data(0.05)
+ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
+
+pylab.show()
+
Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/__init__.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/mplot3d/__init__.py 2009-05-28 14:49:14 UTC (rev 7153)
+++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/__init__.py 2009-05-28 15:59:12 UTC (rev 7154)
@@ -0,0 +1 @@
+from axes3d import Axes3D
Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py 2009-05-28 14:49:14 UTC (rev 7153)
+++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py 2009-05-28 15:59:12 UTC (rev 7154)
@@ -539,6 +539,9 @@
rstride = kwargs.pop('rstride', 10)
cstride = kwargs.pop('cstride', 10)
+ color = kwargs.pop('color', 'b')
+ color = np.array(colorConverter.to_rgba(color))
+
polys = []
boxes = []
for rs in np.arange(0,rows-1,rstride):
@@ -567,8 +570,10 @@
shade.append(np.dot(n,[-1,-1,0.5]))
lines.append((box[0],n+box[0]))
- color = np.array([0,0,1,1])
- norm = Normalize(min(shade),max(shade))
+ shade = np.array(shade)
+ mask = ~np.isnan(shade)
+ norm = Normalize(min(shade[mask]), max(shade[mask]))
+
colors = [color * (0.5+norm(v)*0.5) for v in shade]
for c in colors: c[3] = 1
polyc = art3d.Poly3DCollection(polys, facecolors=colors, *args, **kwargs)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jd...@us...> - 2009-05-28 14:49:16
|
Revision: 7153
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7153&view=rev
Author: jdh2358
Date: 2009-05-28 14:49:14 +0000 (Thu, 28 May 2009)
Log Message:
-----------
update readme w/ test instructions
Modified Paths:
--------------
trunk/matplotlib/release/win32/README.txt
Modified: trunk/matplotlib/release/win32/README.txt
===================================================================
--- trunk/matplotlib/release/win32/README.txt 2009-05-28 14:02:08 UTC (rev 7152)
+++ trunk/matplotlib/release/win32/README.txt 2009-05-28 14:49:14 UTC (rev 7153)
@@ -10,6 +10,7 @@
(tested with MinGW-5.1.4.exe)
http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=240780
+
* Install "MSYS Base System"::
(tested with MSYS-1.0.10.exe)
@@ -21,6 +22,27 @@
http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=233332
NOTE: Uncompress and copy the "wget.exe" file to "C:\MingW\bin\"
+
+* Test your installation. After installing the above, open MSYS and
+ check your install by doing::
+
+ > gcc --version
+ > g++ --version
+
+ If you don't have g++, try running the mingw exe installer again,
+ and you will be prompted for additional compilers to install.
+ Select c++ and you are off to the races.
+
+ Make sure setuptools are installed::
+
+ > /c/python26/python
+ >>> import setuptools
+
+ If not, grab the latest ez_setup.py and install it::
+
+ > wget http://peak.telecommunity.com/dist/ez_setup.py
+ > /c/python26/python ez_setup.py
+
Dir Contents
-------------
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jd...@us...> - 2009-05-28 14:05:27
|
Revision: 7151
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7151&view=rev
Author: jdh2358
Date: 2009-05-28 13:45:36 +0000 (Thu, 28 May 2009)
Log Message:
-----------
remove trailing spaces before comments
Modified Paths:
--------------
trunk/matplotlib/release/win32/Makefile
Modified: trunk/matplotlib/release/win32/Makefile
===================================================================
--- trunk/matplotlib/release/win32/Makefile 2009-05-28 11:54:35 UTC (rev 7150)
+++ trunk/matplotlib/release/win32/Makefile 2009-05-28 13:45:36 UTC (rev 7151)
@@ -1,11 +1,11 @@
PYTHON = C:/Python26/python.exe
-SRCDIR = ${PWD} # autoconf needs this path
-WINSRCDIR = `${PWD}/data/mingw_path.sh ${PWD}` # distutils needs windows paths
+SRCDIR = ${PWD}# autoconf needs this path
+WINSRCDIR = `${PWD}/data/mingw_path.sh ${PWD}`# distutils needs windows paths
ZLIBVERSION = 1.2.3
PNGVERSION = 1.2.33
FREETYPEVERSION = 2.3.7
-#TCLTKVERSION = 8.4.19 # Before Python 2.6
-TCLTKVERSION = 8.5.7 # Python 2.6
+#TCLTKVERSION = 8.4.19# Before Python 2.6
+TCLTKVERSION = 8.5.7# Python 2.6
MPLVERSION = 0.98.6svn
## You shouldn't need to configure past this point
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2009-05-28 11:54:41
|
Revision: 7150
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7150&view=rev
Author: mdboom
Date: 2009-05-28 11:54:35 +0000 (Thu, 28 May 2009)
Log Message:
-----------
Fix some compiler warnings
Modified Paths:
--------------
trunk/matplotlib/agg24/include/agg_conv_curve.h
trunk/matplotlib/src/_png.cpp
Modified: trunk/matplotlib/agg24/include/agg_conv_curve.h
===================================================================
--- trunk/matplotlib/agg24/include/agg_conv_curve.h 2009-05-28 11:54:18 UTC (rev 7149)
+++ trunk/matplotlib/agg24/include/agg_conv_curve.h 2009-05-28 11:54:35 UTC (rev 7150)
@@ -2,8 +2,8 @@
// Anti-Grain Geometry - Version 2.4
// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)
//
-// Permission to copy, use, modify, sell and distribute this software
-// is granted provided this copyright notice appears in all copies.
+// Permission to copy, use, modify, sell and distribute this software
+// is granted provided this copyright notice appears in all copies.
// This software is provided "as is" without express or implied
// warranty, and with no claim as to its suitability for any purpose.
//
@@ -28,31 +28,31 @@
//---------------------------------------------------------------conv_curve
- // Curve converter class. Any path storage can have Bezier curves defined
- // by their control points. There're two types of curves supported: curve3
+ // Curve converter class. Any path storage can have Bezier curves defined
+ // by their control points. There're two types of curves supported: curve3
// and curve4. Curve3 is a conic Bezier curve with 2 endpoints and 1 control
// point. Curve4 has 2 control points (4 points in total) and can be used
- // to interpolate more complicated curves. Curve4, unlike curve3 can be used
- // to approximate arcs, both circular and elliptical. Curves are approximated
- // with straight lines and one of the approaches is just to store the whole
- // sequence of vertices that approximate our curve. It takes additional
- // memory, and at the same time the consecutive vertices can be calculated
- // on demand.
+ // to interpolate more complicated curves. Curve4, unlike curve3 can be used
+ // to approximate arcs, both circular and elliptical. Curves are approximated
+ // with straight lines and one of the approaches is just to store the whole
+ // sequence of vertices that approximate our curve. It takes additional
+ // memory, and at the same time the consecutive vertices can be calculated
+ // on demand.
//
// Initially, path storages are not suppose to keep all the vertices of the
// curves (although, nothing prevents us from doing so). Instead, path_storage
// keeps only vertices, needed to calculate a curve on demand. Those vertices
- // are marked with special commands. So, if the path_storage contains curves
- // (which are not real curves yet), and we render this storage directly,
- // all we will see is only 2 or 3 straight line segments (for curve3 and
- // curve4 respectively). If we need to see real curves drawn we need to
- // include this class into the conversion pipeline.
+ // are marked with special commands. So, if the path_storage contains curves
+ // (which are not real curves yet), and we render this storage directly,
+ // all we will see is only 2 or 3 straight line segments (for curve3 and
+ // curve4 respectively). If we need to see real curves drawn we need to
+ // include this class into the conversion pipeline.
//
- // Class conv_curve recognizes commands path_cmd_curve3 and path_cmd_curve4
- // and converts these vertices into a move_to/line_to sequence.
+ // Class conv_curve recognizes commands path_cmd_curve3 and path_cmd_curve4
+ // and converts these vertices into a move_to/line_to sequence.
//-----------------------------------------------------------------------
- template<class VertexSource,
- class Curve3=curve3,
+ template<class VertexSource,
+ class Curve3=curve3,
class Curve4=curve4> class conv_curve
{
public:
@@ -64,51 +64,51 @@
m_source(&source), m_last_x(0.0), m_last_y(0.0) {}
void attach(VertexSource& source) { m_source = &source; }
- void approximation_method(curve_approximation_method_e v)
- {
+ void approximation_method(curve_approximation_method_e v)
+ {
m_curve3.approximation_method(v);
m_curve4.approximation_method(v);
}
- curve_approximation_method_e approximation_method() const
- {
+ curve_approximation_method_e approximation_method() const
+ {
return m_curve4.approximation_method();
}
- void approximation_scale(double s)
- {
- m_curve3.approximation_scale(s);
- m_curve4.approximation_scale(s);
+ void approximation_scale(double s)
+ {
+ m_curve3.approximation_scale(s);
+ m_curve4.approximation_scale(s);
}
- double approximation_scale() const
- {
- return m_curve4.approximation_scale();
+ double approximation_scale() const
+ {
+ return m_curve4.approximation_scale();
}
- void angle_tolerance(double v)
- {
- m_curve3.angle_tolerance(v);
- m_curve4.angle_tolerance(v);
+ void angle_tolerance(double v)
+ {
+ m_curve3.angle_tolerance(v);
+ m_curve4.angle_tolerance(v);
}
- double angle_tolerance() const
- {
- return m_curve4.angle_tolerance();
+ double angle_tolerance() const
+ {
+ return m_curve4.angle_tolerance();
}
- void cusp_limit(double v)
- {
- m_curve3.cusp_limit(v);
- m_curve4.cusp_limit(v);
+ void cusp_limit(double v)
+ {
+ m_curve3.cusp_limit(v);
+ m_curve4.cusp_limit(v);
}
- double cusp_limit() const
- {
- return m_curve4.cusp_limit();
+ double cusp_limit() const
+ {
+ return m_curve4.cusp_limit();
}
- void rewind(unsigned path_id);
+ void rewind(unsigned path_id);
unsigned vertex(double* x, double* y);
private:
@@ -154,10 +154,10 @@
return path_cmd_line_to;
}
- double ct2_x;
- double ct2_y;
- double end_x;
- double end_y;
+ double ct2_x = 0.0;
+ double ct2_y = 0.0;
+ double end_x = 0.0;
+ double end_y = 0.0;
unsigned cmd = m_source->vertex(x, y);
switch(cmd)
@@ -165,8 +165,8 @@
case path_cmd_curve3:
m_source->vertex(&end_x, &end_y);
- m_curve3.init(m_last_x, m_last_y,
- *x, *y,
+ m_curve3.init(m_last_x, m_last_y,
+ *x, *y,
end_x, end_y);
m_curve3.vertex(x, y); // First call returns path_cmd_move_to
@@ -178,9 +178,9 @@
m_source->vertex(&ct2_x, &ct2_y);
m_source->vertex(&end_x, &end_y);
- m_curve4.init(m_last_x, m_last_y,
- *x, *y,
- ct2_x, ct2_y,
+ m_curve4.init(m_last_x, m_last_y,
+ *x, *y,
+ ct2_x, ct2_y,
end_x, end_y);
m_curve4.vertex(x, y); // First call returns path_cmd_move_to
Modified: trunk/matplotlib/src/_png.cpp
===================================================================
--- trunk/matplotlib/src/_png.cpp 2009-05-28 11:54:18 UTC (rev 7149)
+++ trunk/matplotlib/src/_png.cpp 2009-05-28 11:54:35 UTC (rev 7150)
@@ -272,11 +272,11 @@
size_t offset = y*A->strides[0] + x*A->strides[1];
if (bit_depth == 16) {
png_uint_16* ptr = &reinterpret_cast<png_uint_16*> (row)[x * dimensions[2]];
- for (png_uint_32 p = 0; p < dimensions[2]; p++)
+ for (png_uint_32 p = 0; p < (png_uint_32)dimensions[2]; p++)
*(float*)(A->data + offset + p*A->strides[2]) = (float)(ptr[p]) / max_value;
} else {
png_byte* ptr = &(row[x * dimensions[2]]);
- for (png_uint_32 p = 0; p < dimensions[2]; p++)
+ for (png_uint_32 p = 0; p < (png_uint_32)dimensions[2]; p++)
{
*(float*)(A->data + offset + p*A->strides[2]) = (float)(ptr[p]) / max_value;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2009-05-28 11:54:24
|
Revision: 7149
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7149&view=rev
Author: mdboom
Date: 2009-05-28 11:54:18 +0000 (Thu, 28 May 2009)
Log Message:
-----------
Fix documentation of path.simplify to reflect reality
Modified Paths:
--------------
trunk/matplotlib/matplotlibrc.template
Modified: trunk/matplotlib/matplotlibrc.template
===================================================================
--- trunk/matplotlib/matplotlibrc.template 2009-05-28 04:02:17 UTC (rev 7148)
+++ trunk/matplotlib/matplotlibrc.template 2009-05-28 11:54:18 UTC (rev 7149)
@@ -289,8 +289,9 @@
# A value of 20000 is probably a good
# starting point.
### SAVING FIGURES
-#path.simplify : False # When True, simplify paths in vector backends, such as
- # PDF, PS and SVG
+#path.simplify : False # When True, simplify paths by removing "invisible"
+ # points to reduce file size and increase rendering
+ # speed
#path.simplify_threshold : 0.1 # The threshold of similarity below which
# vertices will be removed in the simplification
# process
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cm...@us...> - 2009-05-28 04:02:24
|
Revision: 7148
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7148&view=rev
Author: cmoad
Date: 2009-05-28 04:02:17 +0000 (Thu, 28 May 2009)
Log Message:
-----------
added win32 release README
Modified Paths:
--------------
trunk/matplotlib/release/osx/README.txt
Added Paths:
-----------
trunk/matplotlib/release/win32/README.txt
Modified: trunk/matplotlib/release/osx/README.txt
===================================================================
--- trunk/matplotlib/release/osx/README.txt 2009-05-28 03:48:15 UTC (rev 7147)
+++ trunk/matplotlib/release/osx/README.txt 2009-05-28 04:02:17 UTC (rev 7148)
@@ -1,6 +1,6 @@
Building binary releases of OS X
-Included here is everything to build a binay package installer for OS
+Included here is everything to build a binary package installer for OS
X
Dir Contents
Added: trunk/matplotlib/release/win32/README.txt
===================================================================
--- trunk/matplotlib/release/win32/README.txt (rev 0)
+++ trunk/matplotlib/release/win32/README.txt 2009-05-28 04:02:17 UTC (rev 7148)
@@ -0,0 +1,55 @@
+Building binary releases of WIN32
+
+Included here is everything to build a binary package installer for WIN32 using MinGW
+
+MinGW Requirements
+-------------
+
+* Install MinGW using the "Automated MinGW Installer"::
+
+ (tested with MinGW-5.1.4.exe)
+ http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=240780
+
+* Install "MSYS Base System"::
+
+ (tested with MSYS-1.0.10.exe)
+ http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963
+
+* Install wget from "mingwPORT"::
+
+ (tested with wget-1.9.1-mingwPORT.tar.bz2)
+ http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=233332
+ NOTE: Uncompress and copy the "wget.exe" file to "C:\MingW\bin\"
+
+Dir Contents
+-------------
+
+* :file:`data` - some config files and patches needed for the build
+
+* :file:`Makefile` - all the build commands
+
+How to build
+--------------
+
+* Edit the variables as needed in :file:`Makefile`
+
+* Open a msys shell from::
+
+ All Programs -> MinGW -> MSYS -> msys
+
+* First fetch all the dependencies::
+
+ make fetch_deps
+
+* build the dependencies::
+
+ make dependencies
+
+* copy over the latest mpl *.tar.gz tarball to this directory, update
+ the MPLVERSION in the Makefile::
+
+* build the wininst binary and egg::
+
+ make installers
+
+ The wininst and egg binaries will reside in :file:`matplotlib-VERSION/dist`
Property changes on: trunk/matplotlib/release/win32/README.txt
___________________________________________________________________
Added: svn:mime-type
+ text/plain
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cm...@us...> - 2009-05-28 03:48:20
|
Revision: 7147
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7147&view=rev
Author: cmoad
Date: 2009-05-28 03:48:15 +0000 (Thu, 28 May 2009)
Log Message:
-----------
finished win32 release scripts
Modified Paths:
--------------
trunk/matplotlib/release/win32/Makefile
trunk/matplotlib/release/win32/data/setup.cfg
Added Paths:
-----------
trunk/matplotlib/release/win32/data/mingw_path.sh
trunk/matplotlib/release/win32/data/setupwin.py
trunk/matplotlib/release/win32/data/setupwinegg.py
Modified: trunk/matplotlib/release/win32/Makefile
===================================================================
--- trunk/matplotlib/release/win32/Makefile 2009-05-28 03:24:27 UTC (rev 7146)
+++ trunk/matplotlib/release/win32/Makefile 2009-05-28 03:48:15 UTC (rev 7147)
@@ -1,26 +1,47 @@
-PYTHON=C:/Python26/python.exe
-SRCDIR=${PWD}
-ZLIBVERSION=1.2.3
-PNGVERSION=1.2.33
-FREETYPEVERSION=2.3.7
-MPLVERSION=0.98.5.3
+PYTHON = C:/Python26/python.exe
+SRCDIR = ${PWD} # autoconf needs this path
+WINSRCDIR = `${PWD}/data/mingw_path.sh ${PWD}` # distutils needs windows paths
+ZLIBVERSION = 1.2.3
+PNGVERSION = 1.2.33
+FREETYPEVERSION = 2.3.7
+#TCLTKVERSION = 8.4.19 # Before Python 2.6
+TCLTKVERSION = 8.5.7 # Python 2.6
+MPLVERSION = 0.98.6svn
## You shouldn't need to configure past this point
-CFLAGS="-Os -I${SRCDIR}/zlib-${ZLIBVERSION} -I${SRCDIR}/libpng-${PNGVERSION} -I${SRCDIR}/freetype-${FREETYPEVERSION}/include"
+CFLAGS = -Os
+CFLAGS += -I${SRCDIR}/zlib-${ZLIBVERSION}
+CFLAGS += -I${SRCDIR}/libpng-${PNGVERSION}
+CFLAGS += -I${SRCDIR}/freetype-${FREETYPEVERSION}/include
+CFLAGS += -I${SRCDIR}/tcl${TCLTKVERSION}-src/generic
+CFLAGS += -I${SRCDIR}/tcl${TCLTKVERSION}-src/win
+CFLAGS += -I${SRCDIR}/tk${TCLTKVERSION}-src/generic
+CFLAGS += -I${SRCDIR}/tk${TCLTKVERSION}-src/win
+CFLAGS += -I${SRCDIR}/tk${TCLTKVERSION}-src/X11
-LDFLAGS="-L${SRCDIR}/zlib-${ZLIBVERSION} -L${SRCDIR}/libpng-${PNGVERSION} -L${SRCDIR}/freetype-${FREETYPEVERSION}"
+LDFLAGS = -L${SRCDIR}/zlib-${ZLIBVERSION}
+LDFLAGS += -L${SRCDIR}/libpng-${PNGVERSION}
+LDFLAGS += -L${SRCDIR}/freetype-${FREETYPEVERSION}s
+PY_INCLUDE = "${WINSRCDIR}\\zlib-${ZLIBVERSION};${WINSRCDIR}/libpng-${PNGVERSION};${WINSRCDIR}/freetype-${FREETYPEVERSION}/include;${WINSRCDIR}/tcl${TCLTKVERSION}/generic;${WINSRCDIR}/tcl${TCLTKVERSION}/win;${WINSRCDIR}/tk${TCLTKVERSION}/generic;${WINSRCDIR}/tk${TCLTKVERSION}/win;${WINSRCDIR}/tk${TCLTKVERSION}/xlib"
+
+PY_LINKER = "${WINSRCDIR}/zlib-${ZLIBVERSION};${WINSRCDIR}/libpng-${PNGVERSION};${WINSRCDIR}/freetype-${FREETYPEVERSION}"
+
clean:
rm -rf zlib-${ZLIBVERSION}.tar.gz libpng-${PNGVERSION}.tar.bz2 \
freetype-${FREETYPEVERSION}.tar.bz2 \
+ tcl${TCLTKVERSION}-src.tar.gz tk${TCLTKVERSION}-src.tar.gz \
zlib-${ZLIBVERSION} libpng-${PNGVERSION} freetype-${FREETYPEVERSION} \
+ tcl${TCLTKVERSION} tk${TCLTKVERSION} \
matplotlib-${MPLVERSION} *~
fetch_deps:
wget http://www.zlib.net/zlib-${ZLIBVERSION}.tar.gz
wget http://internap.dl.sourceforge.net/sourceforge/libpng/libpng-${PNGVERSION}.tar.bz2
wget http://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPEVERSION}.tar.bz2
+ wget http://prdownloads.sourceforge.net/tcl/tcl${TCLTKVERSION}-src.tar.gz
+ wget http://prdownloads.sourceforge.net/tcl/tk${TCLTKVERSION}-src.tar.gz
zlib:
rm -rf zlib-${ZLIBVERSION}
@@ -33,8 +54,8 @@
rm -rf libpng-${PNGVERSION}
tar xvfj libpng-${PNGVERSION}.tar.bz2
cd libpng-${PNGVERSION} &&\
- export CFLAGS=${CFLAGS} &&\
- export LDFLAGS=${LDFLAGS} &&\
+ export CFLAGS="${CFLAGS}" &&\
+ export LDFLAGS="${LDFLAGS}" &&\
./configure --disable-shared &&\
make -j3 &&\
cp .libs/libpng.a .
@@ -48,15 +69,21 @@
mingw32-make -j3 &&\
cp objs/libfreetype.a .
-dependencies: png freetype
+tcltk:
+ rm -rf tcl${TCLTKVERSION}
+ rm -rf tk${TCLTKVERSION}
+ tar xvfz tcl${TCLTKVERSION}-src.tar.gz
+ tar xvfz tk${TCLTKVERSION}-src.tar.gz
+dependencies: png freetype tcltk
+
installers:
rm -rf matplotlib-${MPLVERSION}
tar xvzf matplotlib-${MPLVERSION}.tar.gz
cd matplotlib-${MPLVERSION} &&\
rm -rf build &&\
- cp ../data/setup.cfg . &&\
- ${PYTHON} setup.py build -c mingw32 bdist_wininst &&\
- ${PYTHON} setupegg.py build -c mingw32 bdist_egg
+ cp ../data/setup*.* . &&\
+ ${PYTHON} setupwin.py build_ext -c mingw32 -I ${PY_INCLUDE} -L ${PY_LINKER} bdist_wininst &&\
+ ${PYTHON} setupwinegg.py build_ext -c mingw32 -I ${PY_INCLUDE} -L ${PY_LINKER} bdist_egg
all: fetch_deps dependencies installers
Added: trunk/matplotlib/release/win32/data/mingw_path.sh
===================================================================
--- trunk/matplotlib/release/win32/data/mingw_path.sh (rev 0)
+++ trunk/matplotlib/release/win32/data/mingw_path.sh 2009-05-28 03:48:15 UTC (rev 7147)
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+# This script will convert a UNIX path to a Win32 native path
+UPATH=$1
+if test "$UPATH" = ""; then
+ echo EMPTY
+ exit 1
+fi
+#echo "INPUT IS \"$UPATH\"" >&2
+if [ -d "$UPATH" ]
+then
+ cd "$UPATH"
+ WPATH=`pwd -W`
+else
+ # cd up to parent directories until we find
+ # one that exists. Loop ends at "/".
+ dpart=`dirname "$UPATH"`
+ #echo "dpart starts as \"$dpart\"" >&2
+ while [ ! -d "$dpart" ]
+ do
+ dpart=`dirname "$dpart"`
+ #echo "dpart is \"$dpart\"" >&2
+ done
+ #echo "dpart ends as \"$dpart\"" >&2
+
+ if [ "$dpart" != "." ]
+ then
+ dstart=`expr length "$dpart"`
+ # If the last character in dpart is not "/",
+ # then advance dstart by one index. This
+ # avoids two dir seperators in the result.
+ last=`expr length "$dpart"`
+ last=`expr $last - 1`
+ last=${dpart:$last:1}
+ #echo "last is \"$last\"" >&2
+ if [ "$last" != "/" ]
+ then
+ dstart=`expr $dstart + 1`
+ fi
+ dend=`expr length "$UPATH"`
+ dlen=`expr $dend - $dstart`
+ #echo "UPATH is \"$UPATH\"" >&2
+ #echo "dstart is $dstart, dend is $dend, dlen is $dlen" >&2
+ bpart=${UPATH:$dstart:$dend}
+ dpart=`cd "$dpart" ; pwd -W`
+ #echo "dpart \"$dpart\"" >&2
+ #echo "bpart \"$bpart\"" >&2
+ else
+ dpart=`pwd -W`
+ bpart=$UPATH
+ fi
+ WPATH=${dpart}/${bpart}
+fi
+#echo "OUTPUT IS \"$WPATH\"" >&2
+echo $WPATH
+exit 0
+
Modified: trunk/matplotlib/release/win32/data/setup.cfg
===================================================================
--- trunk/matplotlib/release/win32/data/setup.cfg 2009-05-28 03:24:27 UTC (rev 7146)
+++ trunk/matplotlib/release/win32/data/setup.cfg 2009-05-28 03:48:15 UTC (rev 7147)
@@ -1,79 +1,79 @@
-# Rename this file to setup.cfg to modify matplotlib's
-# build options.
-
-[egg_info]
-tag_svn_revision = 1
-
-[status]
-# To suppress display of the dependencies and their versions
-# at the top of the build log, uncomment the following line:
-#suppress = True
-#
-# Uncomment to insert lots of diagnostic prints in extension code
-#verbose = True
-
-[provide_packages]
-# By default, matplotlib checks for a few dependencies and
-# installs them if missing. This feature can be turned off
-# by uncommenting the following lines. Acceptible values are:
-# True: install, overwrite an existing installation
-# False: do not install
-# auto: install only if the package is unavailable. This
-# is the default behavior
-#
-## Date/timezone support:
-pytz = True
-dateutil = True
-
-
-[gui_support]
-# Matplotlib supports multiple GUI toolkits, including Cocoa,
-# GTK, Fltk, MacOSX, Qt, Qt4, Tk, and WX. Support for many of
-# these toolkits requires AGG, the Anti-Grain Geometry library,
-# which is provided by matplotlib and built by default.
-#
-# Some backends are written in pure Python, and others require
-# extension code to be compiled. By default, matplotlib checks
-# for these GUI toolkits during installation and, if present,
-# compiles the required extensions to support the toolkit. GTK
-# support requires the GTK runtime environment and PyGTK. Wx
-# support requires wxWidgets and wxPython. Tk support requires
-# Tk and Tkinter. The other GUI toolkits do not require any
-# extension code, and can be used as long as the libraries are
-# installed on your system.
-#
-# You can uncomment any the following lines if you know you do
-# not want to use the GUI toolkit. Acceptible values are:
-# True: build the extension. Exits with a warning if the
-# required dependencies are not available
-# False: do not build the extension
-# auto: build if the required dependencies are available,
-# otherwise skip silently. This is the default
-# behavior
-#
-gtk = False
-gtkagg = False
-tkagg = True
-wxagg = False
-macosx = False
-
-[rc_options]
-# User-configurable options
-#
-# Default backend, one of: Agg, Cairo, CocoaAgg, GTK, GTKAgg, GTKCairo,
-# FltkAgg, MacOSX, Pdf, Ps, QtAgg, Qt4Agg, SVG, TkAgg, WX, WXAgg.
-#
-# The Agg, Ps, Pdf and SVG backends do not require external
-# dependencies. Do not choose GTK, GTKAgg, GTKCairo, MacOSX, TkAgg or WXAgg
-# if you have disabled the relevent extension modules. Agg will be used
-# by default.
-#
-backend = TkAgg
-#
-# The numerix module was historically used to provide
-# compatibility between the Numeric, numarray, and NumPy array
-# packages. Now that NumPy has emerge as the universal array
-# package for python, numerix is not really necessary and is
-# maintained to provide backward compatibility. Do not change
-# this unless you have a compelling reason to do so.
-#numerix = numpy
+# Rename this file to setup.cfg to modify matplotlib's
+# build options.
+
+[egg_info]
+tag_svn_revision = 0
+
+[status]
+# To suppress display of the dependencies and their versions
+# at the top of the build log, uncomment the following line:
+#suppress = True
+#
+# Uncomment to insert lots of diagnostic prints in extension code
+#verbose = True
+
+[provide_packages]
+# By default, matplotlib checks for a few dependencies and
+# installs them if missing. This feature can be turned off
+# by uncommenting the following lines. Acceptible values are:
+# True: install, overwrite an existing installation
+# False: do not install
+# auto: install only if the package is unavailable. This
+# is the default behavior
+#
+## Date/timezone support:
+pytz = True
+dateutil = True
+
+
+[gui_support]
+# Matplotlib supports multiple GUI toolkits, including Cocoa,
+# GTK, Fltk, MacOSX, Qt, Qt4, Tk, and WX. Support for many of
+# these toolkits requires AGG, the Anti-Grain Geometry library,
+# which is provided by matplotlib and built by default.
+#
+# Some backends are written in pure Python, and others require
+# extension code to be compiled. By default, matplotlib checks
+# for these GUI toolkits during installation and, if present,
+# compiles the required extensions to support the toolkit. GTK
+# support requires the GTK runtime environment and PyGTK. Wx
+# support requires wxWidgets and wxPython. Tk support requires
+# Tk and Tkinter. The other GUI toolkits do not require any
+# extension code, and can be used as long as the libraries are
+# installed on your system.
+#
+# You can uncomment any the following lines if you know you do
+# not want to use the GUI toolkit. Acceptible values are:
+# True: build the extension. Exits with a warning if the
+# required dependencies are not available
+# False: do not build the extension
+# auto: build if the required dependencies are available,
+# otherwise skip silently. This is the default
+# behavior
+#
+gtk = False
+gtkagg = False
+tkagg = True
+wxagg = False
+macosx = False
+
+[rc_options]
+# User-configurable options
+#
+# Default backend, one of: Agg, Cairo, CocoaAgg, GTK, GTKAgg, GTKCairo,
+# FltkAgg, MacOSX, Pdf, Ps, QtAgg, Qt4Agg, SVG, TkAgg, WX, WXAgg.
+#
+# The Agg, Ps, Pdf and SVG backends do not require external
+# dependencies. Do not choose GTK, GTKAgg, GTKCairo, MacOSX, TkAgg or WXAgg
+# if you have disabled the relevent extension modules. Agg will be used
+# by default.
+#
+backend = TkAgg
+#
+# The numerix module was historically used to provide
+# compatibility between the Numeric, numarray, and NumPy array
+# packages. Now that NumPy has emerge as the universal array
+# package for python, numerix is not really necessary and is
+# maintained to provide backward compatibility. Do not change
+# this unless you have a compelling reason to do so.
+#numerix = numpy
Added: trunk/matplotlib/release/win32/data/setupwin.py
===================================================================
--- trunk/matplotlib/release/win32/data/setupwin.py (rev 0)
+++ trunk/matplotlib/release/win32/data/setupwin.py 2009-05-28 03:48:15 UTC (rev 7147)
@@ -0,0 +1,17 @@
+from distutils import cygwinccompiler
+
+try:
+ # Python 2.6
+ # Replace the msvcr func to return an empty list
+ cygwinccompiler.get_msvcr
+ cygwinccompiler.get_msvcr = lambda: []
+
+except AttributeError:
+ # Before Python 2.6
+ # Wrap the init func to clear to dll libs
+ def new_init(self, **kwargs):
+ cygwinccompiler.CygwinCCompiler.__init__(self, **kwargs)
+ self.dll_libraries = []
+ cygwinccompiler.CygwinCCompiler.__init__ = new_init
+
+execfile('setup.py')
Added: trunk/matplotlib/release/win32/data/setupwinegg.py
===================================================================
--- trunk/matplotlib/release/win32/data/setupwinegg.py (rev 0)
+++ trunk/matplotlib/release/win32/data/setupwinegg.py 2009-05-28 03:48:15 UTC (rev 7147)
@@ -0,0 +1,20 @@
+from distutils import cygwinccompiler
+
+try:
+ # Python 2.6
+ # Replace the msvcr func to return an empty list
+ cygwinccompiler.get_msvcr
+ cygwinccompiler.get_msvcr = lambda: []
+
+except AttributeError:
+ # Before Python 2.6
+ # Wrap the init func to clear to dll libs
+ def new_init(self, **kwargs):
+ cygwinccompiler.CygwinCCompiler.__init__(self, **kwargs)
+ self.dll_libraries = []
+ cygwinccompiler.CygwinCCompiler.__init__ = new_init
+
+from setuptools import setup
+execfile('setup.py',
+ {'additional_params' :
+ {'namespace_packages' : ['mpl_toolkits']}})
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cm...@us...> - 2009-05-28 03:24:32
|
Revision: 7146
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7146&view=rev
Author: cmoad
Date: 2009-05-28 03:24:27 +0000 (Thu, 28 May 2009)
Log Message:
-----------
removed gw32 link flag that's not needed for mingw anymore
Modified Paths:
--------------
trunk/matplotlib/setupext.py
Modified: trunk/matplotlib/setupext.py
===================================================================
--- trunk/matplotlib/setupext.py 2009-05-27 16:25:33 UTC (rev 7145)
+++ trunk/matplotlib/setupext.py 2009-05-28 03:24:27 UTC (rev 7146)
@@ -542,10 +542,7 @@
else:
add_base_flags(module)
module.libraries.append('z')
-
- if sys.platform == 'win32' and win32_compiler == 'mingw32':
- module.libraries.append('gw32c')
-
+
# put this last for library link order
module.libraries.extend(std_libs)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <as...@us...> - 2009-05-27 16:25:39
|
Revision: 7145
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7145&view=rev
Author: astraw
Date: 2009-05-27 16:25:33 +0000 (Wed, 27 May 2009)
Log Message:
-----------
make default argument to Axes.get_xaxis_transform() not raise error
I made this a separate commit from the previous one because it may be
useful to see the errors that arise if get_xaxis_transform() or
get_yaxis_transform() are called with no arguments. This would allow
one to figure out which code paths are calling these methods and fix
them if needed rather than silently partially succeeding.
Modified Paths:
--------------
trunk/matplotlib/examples/api/custom_projection_example.py
trunk/matplotlib/lib/matplotlib/axes.py
trunk/matplotlib/lib/matplotlib/projections/geo.py
trunk/matplotlib/lib/matplotlib/projections/polar.py
Modified: trunk/matplotlib/examples/api/custom_projection_example.py
===================================================================
--- trunk/matplotlib/examples/api/custom_projection_example.py 2009-05-27 16:25:15 UTC (rev 7144)
+++ trunk/matplotlib/examples/api/custom_projection_example.py 2009-05-27 16:25:33 UTC (rev 7145)
@@ -173,7 +173,7 @@
yaxis_text_base + \
Affine2D().translate(8.0, 0.0)
- def get_xaxis_transform(self,which=None):
+ def get_xaxis_transform(self,which='grid'):
"""
Override this method to provide a transformation for the
x-axis grid and ticks.
@@ -199,7 +199,7 @@
"""
return self._xaxis_text2_transform, 'top', 'center'
- def get_yaxis_transform(self,which=None):
+ def get_yaxis_transform(self,which='grid'):
"""
Override this method to provide a transformation for the
y-axis grid and ticks.
Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py 2009-05-27 16:25:15 UTC (rev 7144)
+++ trunk/matplotlib/lib/matplotlib/axes.py 2009-05-27 16:25:33 UTC (rev 7145)
@@ -641,7 +641,7 @@
self._yaxis_transform = mtransforms.blended_transform_factory(
self.transAxes, self.transData)
- def get_xaxis_transform(self,which=None):
+ def get_xaxis_transform(self,which='grid'):
"""
Get the transformation used for drawing x-axis labels, ticks
and gridlines. The x-direction is in data coordinates and the
@@ -712,7 +712,7 @@
self.figure.dpi_scale_trans),
"bottom", "center")
- def get_yaxis_transform(self,which=None):
+ def get_yaxis_transform(self,which='grid'):
"""
Get the transformation used for drawing y-axis labels, ticks
and gridlines. The x-direction is in axis coordinates and the
Modified: trunk/matplotlib/lib/matplotlib/projections/geo.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/projections/geo.py 2009-05-27 16:25:15 UTC (rev 7144)
+++ trunk/matplotlib/lib/matplotlib/projections/geo.py 2009-05-27 16:25:33 UTC (rev 7145)
@@ -121,7 +121,7 @@
.scale(0.5 / xscale, 0.5 / yscale) \
.translate(0.5, 0.5)
- def get_xaxis_transform(self,which=None):
+ def get_xaxis_transform(self,which='grid'):
assert which in ['tick1','tick2','grid']
return self._xaxis_transform
@@ -131,7 +131,7 @@
def get_xaxis_text2_transform(self, pad):
return self._xaxis_text2_transform, 'top', 'center'
- def get_yaxis_transform(self,which=None):
+ def get_yaxis_transform(self,which='grid'):
assert which in ['tick1','tick2','grid']
return self._yaxis_transform
Modified: trunk/matplotlib/lib/matplotlib/projections/polar.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/projections/polar.py 2009-05-27 16:25:15 UTC (rev 7144)
+++ trunk/matplotlib/lib/matplotlib/projections/polar.py 2009-05-27 16:25:33 UTC (rev 7145)
@@ -270,7 +270,7 @@
self._yaxis_transform
)
- def get_xaxis_transform(self,which=None):
+ def get_xaxis_transform(self,which='grid'):
assert which in ['tick1','tick2','grid']
return self._xaxis_transform
@@ -280,7 +280,7 @@
def get_xaxis_text2_transform(self, pad):
return self._xaxis_text2_transform, 'center', 'center'
- def get_yaxis_transform(self,which=None):
+ def get_yaxis_transform(self,which='grid'):
assert which in ['tick1','tick2','grid']
return self._yaxis_transform
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <as...@us...> - 2009-05-27 16:25:21
|
Revision: 7144
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7144&view=rev
Author: astraw
Date: 2009-05-27 16:25:15 +0000 (Wed, 27 May 2009)
Log Message:
-----------
Arbitrary spine placement
Modified Paths:
--------------
trunk/matplotlib/CHANGELOG
trunk/matplotlib/doc/api/api_changes.rst
trunk/matplotlib/doc/users/whats_new.rst
trunk/matplotlib/examples/api/custom_projection_example.py
trunk/matplotlib/examples/tests/backend_driver.py
trunk/matplotlib/lib/matplotlib/axes.py
trunk/matplotlib/lib/matplotlib/axis.py
trunk/matplotlib/lib/matplotlib/projections/geo.py
trunk/matplotlib/lib/matplotlib/projections/polar.py
Added Paths:
-----------
trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py
trunk/matplotlib/lib/matplotlib/spines.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG 2009-05-27 16:24:53 UTC (rev 7143)
+++ trunk/matplotlib/CHANGELOG 2009-05-27 16:25:15 UTC (rev 7144)
@@ -1,3 +1,5 @@
+2009-05-26 Add support for "axis spines" to have arbitrary location. -ADS
+
2009-05-20 Add an empty matplotlibrc to the tests/ directory so that running
tests will use the default set of rcparams rather than the user's
config. - RMM
Modified: trunk/matplotlib/doc/api/api_changes.rst
===================================================================
--- trunk/matplotlib/doc/api/api_changes.rst 2009-05-27 16:24:53 UTC (rev 7143)
+++ trunk/matplotlib/doc/api/api_changes.rst 2009-05-27 16:25:15 UTC (rev 7144)
@@ -20,6 +20,13 @@
Changes beyond 0.98.x
=====================
+* Axes instanaces no longer have a "frame" attribute. Instead, use the
+ new "spines" attribute. Spines is a dictionary where the keys are
+ the names of the spines (e.g. 'left','right' and so on) and the
+ values are the artists that draw the spines. For normal
+ (rectilinear) axes, these artists are Line2D instances. For other
+ axes (such as polar axes), these artists may be Patch instances.
+
* Polar plots no longer accept a resolution kwarg. Instead, each Path
must specify its own number of interpolation steps. This is
unlikely to be a user-visible change -- if interpolation of data is
Modified: trunk/matplotlib/doc/users/whats_new.rst
===================================================================
--- trunk/matplotlib/doc/users/whats_new.rst 2009-05-27 16:24:53 UTC (rev 7143)
+++ trunk/matplotlib/doc/users/whats_new.rst 2009-05-27 16:25:15 UTC (rev 7144)
@@ -4,6 +4,18 @@
What's new in matplotlib
***************************
+.. _whats-new-svn:
+
+What new in svn
+===============
+
+Axis spine placement
+--------------------
+
+Andrew Straw has added the ability to place "axis spines" -- the lines
+that denote the data limits -- in various arbitrary locations. See
+:class:`matplotlib.spines.Spine`.
+
.. _whats-new-0-98-4:
What new in 0.98.4
Modified: trunk/matplotlib/examples/api/custom_projection_example.py
===================================================================
--- trunk/matplotlib/examples/api/custom_projection_example.py 2009-05-27 16:24:53 UTC (rev 7143)
+++ trunk/matplotlib/examples/api/custom_projection_example.py 2009-05-27 16:25:15 UTC (rev 7144)
@@ -6,6 +6,8 @@
from matplotlib.transforms import Affine2D, Affine2DBase, Bbox, \
BboxTransformTo, IdentityTransform, Transform, TransformWrapper
from matplotlib.projections import register_projection
+import matplotlib.spines as mspines
+import matplotlib.axis as maxis
import numpy as np
@@ -32,6 +34,14 @@
self.set_aspect(0.5, adjustable='box', anchor='C')
self.cla()
+ def _init_axis(self):
+ self.xaxis = maxis.XAxis(self)
+ self.yaxis = maxis.YAxis(self)
+ # Do not register xaxis or yaxis with spines -- as done in
+ # Axes._init_axis() -- until HammerAxes.xaxis.cla() works.
+ # self.spines['hammer'].register_axis(self.yaxis)
+ self._update_transScale()
+
def cla(self):
"""
Override to set up some reasonable defaults.
@@ -163,11 +173,12 @@
yaxis_text_base + \
Affine2D().translate(8.0, 0.0)
- def get_xaxis_transform(self):
+ def get_xaxis_transform(self,which=None):
"""
Override this method to provide a transformation for the
x-axis grid and ticks.
"""
+ assert which in ['tick1','tick2','grid']
return self._xaxis_transform
def get_xaxis_text1_transform(self, pixelPad):
@@ -188,11 +199,12 @@
"""
return self._xaxis_text2_transform, 'top', 'center'
- def get_yaxis_transform(self):
+ def get_yaxis_transform(self,which=None):
"""
Override this method to provide a transformation for the
y-axis grid and ticks.
"""
+ assert which in ['tick1','tick2','grid']
return self._yaxis_transform
def get_yaxis_text1_transform(self, pixelPad):
@@ -224,6 +236,9 @@
"""
return Circle((0.5, 0.5), 0.5)
+ def _gen_axes_spines(self):
+ return {'hammer':mspines.Spine(self,'hammer',Circle((0.5, 0.5), 0.5))}
+
# Prevent the user from applying scales to one or both of the
# axes. In this particular case, scaling the axes wouldn't make
# sense, so we don't allow it.
Added: trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py (rev 0)
+++ trunk/matplotlib/examples/pylab_examples/spine_placement_demo.py 2009-05-27 16:25:15 UTC (rev 7144)
@@ -0,0 +1,116 @@
+import matplotlib.pyplot as plt
+import numpy as np
+from matplotlib.pyplot import show
+
+fig = plt.figure()
+x = np.linspace(0,2*np.pi,100)
+y = 2*np.sin(x)
+ax = fig.add_subplot(1,2,1)
+ax.set_title('dropped spines')
+ax.plot(x,y)
+for loc, spine in ax.spines.iteritems():
+ if loc in ['left','bottom']:
+ spine.set_position(('outward',10)) # outward by 10 points
+ elif loc in ['right','top']:
+ spine.set_color('none') # don't draw spine
+ else:
+ raise ValueError('unknown spine location: %s'%loc)
+
+# turn off ticks where there is no spine
+ax.xaxis.set_ticks_position('bottom')
+ax.yaxis.set_ticks_position('left')
+
+ax = fig.add_subplot(1,2,2,sharex=ax)
+ax.plot(x,y)
+ax.set_title('normal spines')
+
+# ----------------------------------------------------
+
+fig = plt.figure()
+x = np.linspace(-np.pi,np.pi,100)
+y = 2*np.sin(x)
+
+ax = fig.add_subplot(2,2,1)
+ax.set_title('centered spines')
+ax.plot(x,y)
+ax.spines['left'].set_position('center')
+ax.spines['right'].set_color('none')
+ax.spines['bottom'].set_position('center')
+ax.spines['top'].set_color('none')
+ax.xaxis.set_ticks_position('bottom')
+ax.yaxis.set_ticks_position('left')
+
+ax = fig.add_subplot(2,2,2)
+ax.set_title('zeroed spines')
+ax.plot(x,y)
+ax.spines['left'].set_position('zero')
+ax.spines['right'].set_color('none')
+ax.spines['bottom'].set_position('zero')
+ax.spines['top'].set_color('none')
+ax.xaxis.set_ticks_position('bottom')
+ax.yaxis.set_ticks_position('left')
+
+ax = fig.add_subplot(2,2,3)
+ax.set_title('spines at axes (0.6, 0.1)')
+ax.plot(x,y)
+ax.spines['left'].set_position(('axes',0.6))
+ax.spines['right'].set_color('none')
+ax.spines['bottom'].set_position(('axes',0.1))
+ax.spines['top'].set_color('none')
+ax.xaxis.set_ticks_position('bottom')
+ax.yaxis.set_ticks_position('left')
+
+ax = fig.add_subplot(2,2,4)
+ax.set_title('spines at data (1,2)')
+ax.plot(x,y)
+ax.spines['left'].set_position(('data',1))
+ax.spines['right'].set_color('none')
+ax.spines['bottom'].set_position(('data',2))
+ax.spines['top'].set_color('none')
+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
+ else:
+ spine.set_color('none') # don't draw spine
+
+ # turn off ticks where there is no spine
+ if 'left' in spines:
+ ax.yaxis.set_ticks_position('left')
+ else:
+ # no yaxis ticks
+ ax.yaxis.set_ticks([])
+
+ if 'bottom' in spines:
+ ax.xaxis.set_ticks_position('bottom')
+ else:
+ # no xaxis ticks
+ ax.xaxis.set_ticks([])
+
+fig = plt.figure()
+
+x = np.linspace(0,2*np.pi,100)
+y = 2*np.sin(x)
+
+ax = fig.add_subplot(2,2,1)
+ax.plot(x,y)
+adjust_spines(ax,['left'])
+
+ax = fig.add_subplot(2,2,2)
+ax.plot(x,y)
+adjust_spines(ax,[])
+
+ax = fig.add_subplot(2,2,3)
+ax.plot(x,y)
+adjust_spines(ax,['left','bottom'])
+
+ax = fig.add_subplot(2,2,4)
+ax.plot(x,y)
+adjust_spines(ax,['bottom'])
+
+show()
Modified: trunk/matplotlib/examples/tests/backend_driver.py
===================================================================
--- trunk/matplotlib/examples/tests/backend_driver.py 2009-05-27 16:24:53 UTC (rev 7143)
+++ trunk/matplotlib/examples/tests/backend_driver.py 2009-05-27 16:25:15 UTC (rev 7144)
@@ -173,6 +173,7 @@
'simple_plot.py',
'simplification_clipping_test.py',
'specgram_demo.py',
+ 'spine_placement_demo.py',
'spy_demos.py',
'stem_plot.py',
'step_demo.py',
Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py 2009-05-27 16:24:53 UTC (rev 7143)
+++ trunk/matplotlib/lib/matplotlib/axes.py 2009-05-27 16:25:15 UTC (rev 7144)
@@ -21,6 +21,7 @@
import matplotlib.lines as mlines
import matplotlib.mlab as mlab
import matplotlib.patches as mpatches
+import matplotlib.spines as mspines
import matplotlib.quiver as mquiver
import matplotlib.scale as mscale
import matplotlib.table as mtable
@@ -526,6 +527,8 @@
self.set_axes_locator(kwargs.get("axes_locator", None))
+ self.spines = self._gen_axes_spines()
+
# this call may differ for non-sep axes, eg polar
self._init_axis()
@@ -576,7 +579,11 @@
def _init_axis(self):
"move this out of __init__ because non-separable axes don't use it"
self.xaxis = maxis.XAxis(self)
+ self.spines['bottom'].register_axis(self.xaxis)
+ self.spines['top'].register_axis(self.xaxis)
self.yaxis = maxis.YAxis(self)
+ self.spines['left'].register_axis(self.yaxis)
+ self.spines['right'].register_axis(self.yaxis)
self._update_transScale()
def set_figure(self, fig):
@@ -634,7 +641,7 @@
self._yaxis_transform = mtransforms.blended_transform_factory(
self.transAxes, self.transData)
- def get_xaxis_transform(self):
+ def get_xaxis_transform(self,which=None):
"""
Get the transformation used for drawing x-axis labels, ticks
and gridlines. The x-direction is in data coordinates and the
@@ -646,7 +653,16 @@
overridden by new kinds of projections that may need to
place axis elements in different locations.
"""
- return self._xaxis_transform
+ if which=='grid':
+ return self._xaxis_transform
+ elif which=='tick1':
+ # for cartesian projection, this is bottom spine
+ return self.spines['bottom'].get_spine_transform()
+ elif which=='tick2':
+ # for cartesian projection, this is top spine
+ return self.spines['top'].get_spine_transform()
+ else:
+ raise ValueError('unknown value for which')
def get_xaxis_text1_transform(self, pad_points):
"""
@@ -667,7 +683,7 @@
overridden by new kinds of projections that may need to
place axis elements in different locations.
"""
- return (self._xaxis_transform +
+ return (self.get_xaxis_transform(which='tick1') +
mtransforms.ScaledTranslation(0, -1 * pad_points / 72.0,
self.figure.dpi_scale_trans),
"top", "center")
@@ -691,12 +707,12 @@
overridden by new kinds of projections that may need to
place axis elements in different locations.
"""
- return (self._xaxis_transform +
+ return (self.get_xaxis_transform(which='tick2') +
mtransforms.ScaledTranslation(0, pad_points / 72.0,
self.figure.dpi_scale_trans),
"bottom", "center")
- def get_yaxis_transform(self):
+ def get_yaxis_transform(self,which=None):
"""
Get the transformation used for drawing y-axis labels, ticks
and gridlines. The x-direction is in axis coordinates and the
@@ -708,7 +724,16 @@
overridden by new kinds of projections that may need to
place axis elements in different locations.
"""
- return self._yaxis_transform
+ if which=='grid':
+ return self._yaxis_transform
+ elif which=='tick1':
+ # for cartesian projection, this is bottom spine
+ return self.spines['left'].get_spine_transform()
+ elif which=='tick2':
+ # for cartesian projection, this is top spine
+ return self.spines['right'].get_spine_transform()
+ else:
+ raise ValueError('unknown value for which')
def get_yaxis_text1_transform(self, pad_points):
"""
@@ -729,7 +754,7 @@
overridden by new kinds of projections that may need to
place axis elements in different locations.
"""
- return (self._yaxis_transform +
+ return (self.get_yaxis_transform(which='tick1') +
mtransforms.ScaledTranslation(-1 * pad_points / 72.0, 0,
self.figure.dpi_scale_trans),
"center", "right")
@@ -754,7 +779,7 @@
overridden by new kinds of projections that may need to
place axis elements in different locations.
"""
- return (self._yaxis_transform +
+ return (self.get_yaxis_transform(which='tick2') +
mtransforms.ScaledTranslation(pad_points / 72.0, 0,
self.figure.dpi_scale_trans),
"center", "left")
@@ -853,6 +878,29 @@
"""
return mpatches.Rectangle((0.0, 0.0), 1.0, 1.0)
+ def _gen_axes_spines(self, locations=None, offset=0.0, units='inches'):
+ """
+ Returns a dict whose keys are spine names and values are
+ Line2D or Patch instances. Each element is used to draw a
+ spine of the axes.
+
+ In the standard axes, this is a single line segment, but in
+ other projections it may not be.
+
+ .. note::
+ Intended to be overridden by new projection types.
+ """
+ return {
+ 'left':mspines.Spine(self,'left',
+ mlines.Line2D((0.0, 0.0), (0.0, 1.0))),
+ 'right':mspines.Spine(self,'right',
+ mlines.Line2D((1.0, 1.0), (0.0, 1.0))),
+ 'bottom':mspines.Spine(self,'bottom',
+ mlines.Line2D((0.0, 1.0), (0.0, 0.0))),
+ 'top':mspines.Spine(self,'top',
+ mlines.Line2D((0.0, 1.0), (1.0, 1.0))),
+ }
+
def cla(self):
'Clear the current axes'
# Note: this is called by Axes.__init__()
@@ -928,17 +976,6 @@
self.patch.set_linewidth(0)
self.patch.set_transform(self.transAxes)
- # the frame draws the border around the axes and we want this
- # above. this is a place holder for a more sophisticated
- # artist that might just draw a left, bottom frame, or a
- # centered frame, etc the axesFrame name is deprecated
- self.frame = self.axesFrame = self._gen_axes_patch()
- self.frame.set_figure(self.figure)
- self.frame.set_facecolor('none')
- self.frame.set_edgecolor(rcParams['axes.edgecolor'])
- self.frame.set_linewidth(rcParams['axes.linewidth'])
- self.frame.set_transform(self.transAxes)
- self.frame.set_zorder(2.5)
self.axison = True
self.xaxis.set_clip_path(self.patch)
@@ -947,6 +984,10 @@
self._shared_x_axes.clean()
self._shared_y_axes.clean()
+ def get_frame(self):
+ raise AttributeError('Axes.frame was removed in favor of Axes.spines')
+ frame = property(get_frame)
+
def clear(self):
'clear the axes'
self.cla()
@@ -1724,7 +1765,7 @@
# decouple these so the patch can be in the background and the
# frame in the foreground.
if self.axison and self._frameon:
- artists.append(self.frame)
+ artists.extend(self.spines.itervalues())
dsu = [ (a.zorder, i, a) for i, a in enumerate(artists)
@@ -2645,7 +2686,7 @@
children.extend(self.collections)
children.append(self.title)
children.append(self.patch)
- children.append(self.frame)
+ children.extend(self.spines.itervalues())
return children
def contains(self,mouseevent):
Modified: trunk/matplotlib/lib/matplotlib/axis.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axis.py 2009-05-27 16:24:53 UTC (rev 7143)
+++ trunk/matplotlib/lib/matplotlib/axis.py 2009-05-27 16:25:15 UTC (rev 7144)
@@ -282,7 +282,7 @@
marker = self._xtickmarkers[0],
markersize=self._size,
)
- l.set_transform(self.axes.get_xaxis_transform())
+ l.set_transform(self.axes.get_xaxis_transform(which='tick1'))
self._set_artist_props(l)
return l
@@ -296,7 +296,7 @@
markersize=self._size,
)
- l.set_transform(self.axes.get_xaxis_transform())
+ l.set_transform(self.axes.get_xaxis_transform(which='tick2'))
self._set_artist_props(l)
return l
@@ -308,7 +308,7 @@
linestyle=rcParams['grid.linestyle'],
linewidth=rcParams['grid.linewidth'],
)
- l.set_transform(self.axes.get_xaxis_transform())
+ l.set_transform(self.axes.get_xaxis_transform(which='grid'))
l.get_path()._interpolation_steps = GRIDLINE_INTERPOLATION_STEPS
self._set_artist_props(l)
@@ -412,7 +412,7 @@
linestyle = 'None',
markersize=self._size,
)
- l.set_transform(self.axes.get_yaxis_transform())
+ l.set_transform(self.axes.get_yaxis_transform(which='tick1'))
self._set_artist_props(l)
return l
@@ -425,7 +425,7 @@
markersize=self._size,
)
- l.set_transform(self.axes.get_yaxis_transform())
+ l.set_transform(self.axes.get_yaxis_transform(which='tick2'))
self._set_artist_props(l)
return l
@@ -438,7 +438,7 @@
linewidth=rcParams['grid.linewidth'],
)
- l.set_transform(self.axes.get_yaxis_transform())
+ l.set_transform(self.axes.get_yaxis_transform(which='grid'))
l.get_path()._interpolation_steps = GRIDLINE_INTERPOLATION_STEPS
self._set_artist_props(l)
return l
Modified: trunk/matplotlib/lib/matplotlib/projections/geo.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/projections/geo.py 2009-05-27 16:24:53 UTC (rev 7143)
+++ trunk/matplotlib/lib/matplotlib/projections/geo.py 2009-05-27 16:25:15 UTC (rev 7144)
@@ -10,6 +10,8 @@
from matplotlib import cbook
from matplotlib.patches import Circle
from matplotlib.path import Path
+import matplotlib.spines as mspines
+import matplotlib.axis as maxis
from matplotlib.ticker import Formatter, Locator, NullLocator, FixedLocator, NullFormatter
from matplotlib.transforms import Affine2D, Affine2DBase, Bbox, \
BboxTransformTo, IdentityTransform, Transform, TransformWrapper
@@ -36,6 +38,14 @@
RESOLUTION = 75
+ def _init_axis(self):
+ self.xaxis = maxis.XAxis(self)
+ self.yaxis = maxis.YAxis(self)
+ # Do not register xaxis or yaxis with spines -- as done in
+ # Axes._init_axis() -- until GeoAxes.xaxis.cla() works.
+ # self.spines['geo'].register_axis(self.yaxis)
+ self._update_transScale()
+
def cla(self):
Axes.cla(self)
@@ -111,7 +121,8 @@
.scale(0.5 / xscale, 0.5 / yscale) \
.translate(0.5, 0.5)
- def get_xaxis_transform(self):
+ def get_xaxis_transform(self,which=None):
+ assert which in ['tick1','tick2','grid']
return self._xaxis_transform
def get_xaxis_text1_transform(self, pad):
@@ -120,7 +131,8 @@
def get_xaxis_text2_transform(self, pad):
return self._xaxis_text2_transform, 'top', 'center'
- def get_yaxis_transform(self):
+ def get_yaxis_transform(self,which=None):
+ assert which in ['tick1','tick2','grid']
return self._yaxis_transform
def get_yaxis_text1_transform(self, pad):
@@ -132,6 +144,9 @@
def _gen_axes_patch(self):
return Circle((0.5, 0.5), 0.5)
+ def _gen_axes_spines(self):
+ return {'geo':mspines.Spine(self,'geo',Circle((0.5, 0.5), 0.5))}
+
def set_yscale(self, *args, **kwargs):
if args[0] != 'linear':
raise NotImplementedError
Modified: trunk/matplotlib/lib/matplotlib/projections/polar.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/projections/polar.py 2009-05-27 16:24:53 UTC (rev 7143)
+++ trunk/matplotlib/lib/matplotlib/projections/polar.py 2009-05-27 16:25:15 UTC (rev 7144)
@@ -7,12 +7,14 @@
rcParams = matplotlib.rcParams
from matplotlib.artist import kwdocd
from matplotlib.axes import Axes
+import matplotlib.axis as maxis
from matplotlib import cbook
from matplotlib.patches import Circle
from matplotlib.path import Path
from matplotlib.ticker import Formatter, Locator
from matplotlib.transforms import Affine2D, Affine2DBase, Bbox, \
BboxTransformTo, IdentityTransform, Transform, TransformWrapper
+import matplotlib.spines as mspines
class PolarAxes(Axes):
"""
@@ -202,6 +204,16 @@
self.xaxis.set_ticks_position('none')
self.yaxis.set_ticks_position('none')
+ def _init_axis(self):
+ "move this out of __init__ because non-separable axes don't use it"
+ self.xaxis = maxis.XAxis(self)
+ self.yaxis = maxis.YAxis(self)
+ # Calling polar_axes.xaxis.cla() or polar_axes.xaxis.cla()
+ # results in weird artifacts. Therefore we disable this for
+ # now.
+ # self.spines['polar'].register_axis(self.yaxis)
+ self._update_transScale()
+
def _set_lim_and_transforms(self):
self.transAxes = BboxTransformTo(self.bbox)
@@ -258,7 +270,8 @@
self._yaxis_transform
)
- def get_xaxis_transform(self):
+ def get_xaxis_transform(self,which=None):
+ assert which in ['tick1','tick2','grid']
return self._xaxis_transform
def get_xaxis_text1_transform(self, pad):
@@ -267,7 +280,8 @@
def get_xaxis_text2_transform(self, pad):
return self._xaxis_text2_transform, 'center', 'center'
- def get_yaxis_transform(self):
+ def get_yaxis_transform(self,which=None):
+ assert which in ['tick1','tick2','grid']
return self._yaxis_transform
def get_yaxis_text1_transform(self, pad):
@@ -279,6 +293,9 @@
def _gen_axes_patch(self):
return Circle((0.5, 0.5), 0.5)
+ def _gen_axes_spines(self):
+ return {'polar':mspines.Spine(self,'polar',Circle((0.5, 0.5), 0.5))}
+
def set_rmax(self, rmax):
self.viewLim.y0 = 0
self.viewLim.y1 = rmax
Added: trunk/matplotlib/lib/matplotlib/spines.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/spines.py (rev 0)
+++ trunk/matplotlib/lib/matplotlib/spines.py 2009-05-27 16:25:15 UTC (rev 7144)
@@ -0,0 +1,232 @@
+from __future__ import division
+
+import matplotlib
+rcParams = matplotlib.rcParams
+
+import matplotlib.artist as martist
+from matplotlib.artist import allow_rasterization
+import matplotlib.transforms as mtransforms
+import matplotlib.lines as mlines
+import matplotlib.patches as mpatches
+import warnings
+
+class Spine(martist.Artist):
+ """an axis spine -- the line noting the data area boundaries
+
+ Spines are the lines connecting the axis tick marks and noting the
+ boundaries of the data area. They can be placed at arbitrary
+ positions. See function:`~matplotlib.spines.Spine.set_position`
+ for more information.
+
+ The default position is ``('outward',0)``.
+ """
+ def __str__(self):
+ return "Spine"
+
+ def __init__(self,axes,spine_type,artist):
+ """
+ - *axes* : the Axes instance containing the spine
+ - *spine_type* : a string specifying the spine type
+ - *artist* : the artist instance used to draw the spine
+ """
+ martist.Artist.__init__(self)
+ self.axes = axes
+ self.set_figure(self.axes.figure)
+ self.spine_type = spine_type
+ self.artist = artist
+ self.color = rcParams['axes.edgecolor']
+ self.axis = None
+
+ if isinstance(self.artist,mlines.Line2D):
+ self.artist.set_color(self.color)
+ self.artist.set_linewidth(rcParams['axes.linewidth'])
+ elif isinstance(self.artist,mpatches.Patch):
+ self.artist.set_facecolor('none')
+ self.artist.set_edgecolor(self.color)
+ self.artist.set_linewidth(rcParams['axes.linewidth'])
+ self.artist.set_zorder(2.5)
+ self.artist.set_transform(self.axes.transAxes) # default transform
+
+ # 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.)
+ self._position = None
+
+ def _ensure_position_is_set(self):
+ if self._position is None:
+ # default position
+ self._position = ('outward',0.0) # in points
+ self.set_position(self._position)
+
+ def register_axis(self,axis):
+ """register an axis
+
+ An axis should be registered with its corresponding spine from
+ the Axes instance. This allows the spine to clear any axis
+ properties when needed.
+ """
+ self.axis = axis
+ if self.axis is not None:
+ self.axis.cla()
+
+ @allow_rasterization
+ def draw(self,renderer):
+ "draw everything that belongs to the spine"
+ if self.color=='none':
+ # don't draw invisible spines
+ return
+ self.artist.draw(renderer)
+
+ def _calc_offset_transform(self):
+ """calculate the offset transform performed by the spine"""
+ self._ensure_position_is_set()
+ position = self._position
+ if isinstance(position,basestring):
+ 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
+ assert position_type in ('axes','outward','data')
+ if position_type=='outward':
+ if amount == 0:
+ # short circuit commonest case
+ self._spine_transform = ('identity',mtransforms.IdentityTransform())
+ elif self.spine_type in ['left','right','top','bottom']:
+ offset_vec = {'left':(-1,0),
+ 'right':(1,0),
+ 'bottom':(0,-1),
+ 'top':(0,1),
+ }[self.spine_type]
+ # calculate x and y offset in dots
+ offset_x = amount*offset_vec[0]/ 72.0
+ offset_y = amount*offset_vec[1]/ 72.0
+ self._spine_transform = ('post',
+ mtransforms.ScaledTranslation(offset_x,offset_y,
+ self.figure.dpi_scale_trans))
+ else:
+ warnings.warn('unknown spine type "%s": no spine '
+ 'offset performed'%self.spine_type)
+ self._spine_transform = ('identity',mtransforms.IdentityTransform())
+ elif position_type=='axes':
+ if self.spine_type in ('left','right'):
+ self._spine_transform = ('pre',
+ mtransforms.Affine2D().translate(amount, 0.0))
+ elif self.spine_type in ('bottom','top'):
+ self._spine_transform = ('pre',
+ mtransforms.Affine2D().translate(0.0, amount))
+ else:
+ warnings.warn('unknown spine type "%s": no spine '
+ 'offset performed'%self.spine_type)
+ self._spine_transform = ('identity',mtransforms.IdentityTransform())
+ elif position_type=='data':
+ if self.spine_type in ('left','right'):
+ self._spine_transform = ('data',
+ mtransforms.Affine2D().translate(amount,0))
+ elif self.spine_type in ('bottom','top'):
+ self._spine_transform = ('data',
+ mtransforms.Affine2D().translate(0,amount))
+ else:
+ warnings.warn('unknown spine type "%s": no spine '
+ 'offset performed'%self.spine_type)
+ self._spine_transform = ('identity',mtransforms.IdentityTransform())
+
+ def set_position(self,position):
+ """set the position of the spine
+
+ Spine position is specified by a 2 tuple of (position type,
+ amount). The position types are:
+
+ * 'outward' : place the spine out from the data area by the
+ specified number of points. (Negative values specify placing the
+ spine inward.)
+
+ * 'axes' : place the spine at the specified Axes coordinate (from
+ 0.0-1.0).
+
+ * 'data' : place the spine at the specified data coordinate.
+
+ Additionally, shorthand notations define a special positions:
+
+ * 'center' -> ('axes',0.5)
+ * 'zero' -> ('data', 0.0)
+
+ """
+ if position in ('center','zero'):
+ # special positions
+ pass
+ else:
+ assert len(position)==2, "position should be 'center' or 2-tuple"
+ assert position[0] in ['outward','axes','data']
+ self._position = position
+ self._calc_offset_transform()
+
+ t = self.get_spine_transform()
+ if self.spine_type in ['left','right']:
+ t2 = mtransforms.blended_transform_factory(t,
+ self.axes.transAxes)
+ elif self.spine_type in ['bottom','top']:
+ t2 = mtransforms.blended_transform_factory(self.axes.transAxes,
+ t)
+ self.artist.set_transform(t2)
+
+ if self.axis is not None:
+ self.axis.cla()
+
+ def get_position(self):
+ """get the spine position"""
+ self._ensure_position_is_set()
+ return self._position
+
+ def get_spine_transform(self):
+ """get the spine transform"""
+ self._ensure_position_is_set()
+ what, how = self._spine_transform
+
+ if what == 'data':
+ # special case data based spine locations
+ 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:
+ raise ValueError('unknown spine spine_type: %s'%self.spine_type)
+ return result
+
+ if self.spine_type in ['left','right']:
+ base_transform = self.axes.get_yaxis_transform(which='grid')
+ elif self.spine_type in ['top','bottom']:
+ base_transform = self.axes.get_xaxis_transform(which='grid')
+ else:
+ raise ValueError('unknown spine spine_type: %s'%self.spine_type)
+
+ if what=='identity':
+ return base_transform
+ elif what=='post':
+ return base_transform+how
+ elif what=='pre':
+ return how+base_transform
+ else:
+ raise ValueError("unknown spine_transform type: %s"%what)
+
+ def set_color(self,value):
+ """set the color of the spine artist
+
+ Note: a value of 'none' will cause the artist not to be drawn.
+ """
+ self.color = value
+ if isinstance(self.artist,mlines.Line2D):
+ self.artist.set_color(self.color)
+ elif isinstance(self.artist,mpatches.Patch):
+ self.artist.set_edgecolor(self.color)
+
+ def get_color(self):
+ """get the color of the spine artist"""
+ return self.color
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <as...@us...> - 2009-05-27 16:24:55
|
Revision: 7143
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7143&view=rev
Author: astraw
Date: 2009-05-27 16:24:53 +0000 (Wed, 27 May 2009)
Log Message:
-----------
fix typo
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/legend.py
Modified: trunk/matplotlib/lib/matplotlib/legend.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/legend.py 2009-05-25 18:23:25 UTC (rev 7142)
+++ trunk/matplotlib/lib/matplotlib/legend.py 2009-05-27 16:24:53 UTC (rev 7143)
@@ -305,7 +305,7 @@
def _findoffset_best(self, width, height, xdescent, ydescent, renderer):
- "Heper function to locate the legend at its best position"
+ "Helper function to locate the legend at its best position"
ox, oy = self._find_best_position(width, height, renderer)
return ox+xdescent, oy+ydescent
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cm...@us...> - 2009-05-25 18:23:31
|
Revision: 7142
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7142&view=rev
Author: cmoad
Date: 2009-05-25 18:23:25 +0000 (Mon, 25 May 2009)
Log Message:
-----------
more win32 build updates
Modified Paths:
--------------
trunk/matplotlib/release/win32/Makefile
trunk/matplotlib/release/win32/data/setup.cfg
Modified: trunk/matplotlib/release/win32/Makefile
===================================================================
--- trunk/matplotlib/release/win32/Makefile 2009-05-25 17:39:45 UTC (rev 7141)
+++ trunk/matplotlib/release/win32/Makefile 2009-05-25 18:23:25 UTC (rev 7142)
@@ -1,4 +1,4 @@
-PYTHON=python
+PYTHON=C:/Python26/python.exe
SRCDIR=${PWD}
ZLIBVERSION=1.2.3
PNGVERSION=1.2.33
@@ -23,12 +23,14 @@
wget http://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPEVERSION}.tar.bz2
zlib:
+ rm -rf zlib-${ZLIBVERSION}
tar xvfz zlib-${ZLIBVERSION}.tar.gz
cd zlib-${ZLIBVERSION} &&\
./configure &&\
make -j3
png: zlib
+ rm -rf libpng-${PNGVERSION}
tar xvfj libpng-${PNGVERSION}.tar.bz2
cd libpng-${PNGVERSION} &&\
export CFLAGS=${CFLAGS} &&\
@@ -38,10 +40,10 @@
cp .libs/libpng.a .
freetype:
- tar xvfj freetype-${FREETYPEVERSION}.tar.bz2 &&\
+ rm -rf freetype-${FREETYPEVERSION}
+ tar xvfj freetype-${FREETYPEVERSION}.tar.bz2
cd freetype-${FREETYPEVERSION} &&\
- export GNUMAKE=mingw32-make &&\
- ./configure --disable-shared &&\
+ GNUMAKE=mingw32-make ./configure --disable-shared &&\
cp builds/win32/w32-mingw32.mk config.mk &&\
mingw32-make -j3 &&\
cp objs/libfreetype.a .
@@ -49,13 +51,12 @@
dependencies: png freetype
installers:
- tar xvzf matplotlib-${MPLVERSION}.tar.gz &&\
+ rm -rf matplotlib-${MPLVERSION}
+ tar xvzf matplotlib-${MPLVERSION}.tar.gz
cd matplotlib-${MPLVERSION} &&\
rm -rf build &&\
cp ../data/setup.cfg . &&\
- export CFLAGS=${CFLAGS} &&\
- export LDFLAGS=${LDFLAGS} &&\
${PYTHON} setup.py build -c mingw32 bdist_wininst &&\
- ${PYTHON) setupegg.py build -c mingw32 bdist_egg
+ ${PYTHON} setupegg.py build -c mingw32 bdist_egg
all: fetch_deps dependencies installers
Modified: trunk/matplotlib/release/win32/data/setup.cfg
===================================================================
--- trunk/matplotlib/release/win32/data/setup.cfg 2009-05-25 17:39:45 UTC (rev 7141)
+++ trunk/matplotlib/release/win32/data/setup.cfg 2009-05-25 18:23:25 UTC (rev 7142)
@@ -2,7 +2,7 @@
# build options.
[egg_info]
-tag_svn_revision = 0
+tag_svn_revision = 1
[status]
# To suppress display of the dependencies and their versions
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jd...@us...> - 2009-05-25 17:39:51
|
Revision: 7141
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7141&view=rev
Author: jdh2358
Date: 2009-05-25 17:39:45 +0000 (Mon, 25 May 2009)
Log Message:
-----------
only forward pick events to children with the same axes instance as the pick event inaxes method
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/artist.py
Modified: trunk/matplotlib/lib/matplotlib/artist.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/artist.py 2009-05-25 17:38:09 UTC (rev 7140)
+++ trunk/matplotlib/lib/matplotlib/artist.py 2009-05-25 17:39:45 UTC (rev 7141)
@@ -24,13 +24,13 @@
-def allow_rasterization(draw):
+def allow_rasterization(draw):
"""
Decorator for Artist.draw method. Provides routines
that run before and after the draw call. The before and after functions
are useful for changing artist-dependant renderer attributes or making
other setup function calls, such as starting and flushing a mixed-mode
- renderer.
+ renderer.
"""
def before(artist, renderer):
if artist.get_rasterized():
@@ -42,7 +42,7 @@
# the axes class has a second argument inframe for its draw method.
def draw_wrapper(artist, renderer, *kl):
- before(artist, renderer)
+ before(artist, renderer)
draw(artist, renderer, *kl)
after(artist, renderer)
@@ -52,8 +52,8 @@
draw_wrapper.__doc__ = draw.__doc__
draw_wrapper._supports_rasterization = True
return draw_wrapper
-
+
class Artist(object):
"""
Abstract base class for someone who renders into a
@@ -308,7 +308,10 @@
# Pick children
for a in self.get_children():
- a.pick(mouseevent)
+ # make sure the event happened in the same axes
+ ax = getattr(a, 'axes', None)
+ if mouseevent.inaxes==ax:
+ a.pick(mouseevent)
def set_picker(self, picker):
"""
@@ -543,16 +546,16 @@
else:
gc.set_clip_rectangle(None)
gc.set_clip_path(None)
-
+
def get_rasterized(self):
return self._rasterized
-
+
def set_rasterized(self, rasterized):
"""
Force rasterized (bitmap) drawing in vector backend output.
-
+
Defaults to None, which implies the backend's default behavior
-
+
ACCEPTS: [True | False | None]
"""
if rasterized and not hasattr(self.draw, "_supports_rasterization"):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cm...@us...> - 2009-05-25 17:38:15
|
Revision: 7140
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7140&view=rev
Author: cmoad
Date: 2009-05-25 17:38:09 +0000 (Mon, 25 May 2009)
Log Message:
-----------
initial win32 build import
Added Paths:
-----------
trunk/matplotlib/release/win32/
trunk/matplotlib/release/win32/Makefile
trunk/matplotlib/release/win32/data/
trunk/matplotlib/release/win32/data/setup.cfg
Added: trunk/matplotlib/release/win32/Makefile
===================================================================
--- trunk/matplotlib/release/win32/Makefile (rev 0)
+++ trunk/matplotlib/release/win32/Makefile 2009-05-25 17:38:09 UTC (rev 7140)
@@ -0,0 +1,61 @@
+PYTHON=python
+SRCDIR=${PWD}
+ZLIBVERSION=1.2.3
+PNGVERSION=1.2.33
+FREETYPEVERSION=2.3.7
+MPLVERSION=0.98.5.3
+
+## You shouldn't need to configure past this point
+
+CFLAGS="-Os -I${SRCDIR}/zlib-${ZLIBVERSION} -I${SRCDIR}/libpng-${PNGVERSION} -I${SRCDIR}/freetype-${FREETYPEVERSION}/include"
+
+LDFLAGS="-L${SRCDIR}/zlib-${ZLIBVERSION} -L${SRCDIR}/libpng-${PNGVERSION} -L${SRCDIR}/freetype-${FREETYPEVERSION}"
+
+clean:
+ rm -rf zlib-${ZLIBVERSION}.tar.gz libpng-${PNGVERSION}.tar.bz2 \
+ freetype-${FREETYPEVERSION}.tar.bz2 \
+ zlib-${ZLIBVERSION} libpng-${PNGVERSION} freetype-${FREETYPEVERSION} \
+ matplotlib-${MPLVERSION} *~
+
+fetch_deps:
+ wget http://www.zlib.net/zlib-${ZLIBVERSION}.tar.gz
+ wget http://internap.dl.sourceforge.net/sourceforge/libpng/libpng-${PNGVERSION}.tar.bz2
+ wget http://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPEVERSION}.tar.bz2
+
+zlib:
+ tar xvfz zlib-${ZLIBVERSION}.tar.gz
+ cd zlib-${ZLIBVERSION} &&\
+ ./configure &&\
+ make -j3
+
+png: zlib
+ tar xvfj libpng-${PNGVERSION}.tar.bz2
+ cd libpng-${PNGVERSION} &&\
+ export CFLAGS=${CFLAGS} &&\
+ export LDFLAGS=${LDFLAGS} &&\
+ ./configure --disable-shared &&\
+ make -j3 &&\
+ cp .libs/libpng.a .
+
+freetype:
+ tar xvfj freetype-${FREETYPEVERSION}.tar.bz2 &&\
+ cd freetype-${FREETYPEVERSION} &&\
+ export GNUMAKE=mingw32-make &&\
+ ./configure --disable-shared &&\
+ cp builds/win32/w32-mingw32.mk config.mk &&\
+ mingw32-make -j3 &&\
+ cp objs/libfreetype.a .
+
+dependencies: png freetype
+
+installers:
+ tar xvzf matplotlib-${MPLVERSION}.tar.gz &&\
+ cd matplotlib-${MPLVERSION} &&\
+ rm -rf build &&\
+ cp ../data/setup.cfg . &&\
+ export CFLAGS=${CFLAGS} &&\
+ export LDFLAGS=${LDFLAGS} &&\
+ ${PYTHON} setup.py build -c mingw32 bdist_wininst &&\
+ ${PYTHON) setupegg.py build -c mingw32 bdist_egg
+
+all: fetch_deps dependencies installers
Added: trunk/matplotlib/release/win32/data/setup.cfg
===================================================================
--- trunk/matplotlib/release/win32/data/setup.cfg (rev 0)
+++ trunk/matplotlib/release/win32/data/setup.cfg 2009-05-25 17:38:09 UTC (rev 7140)
@@ -0,0 +1,79 @@
+# Rename this file to setup.cfg to modify matplotlib's
+# build options.
+
+[egg_info]
+tag_svn_revision = 0
+
+[status]
+# To suppress display of the dependencies and their versions
+# at the top of the build log, uncomment the following line:
+#suppress = True
+#
+# Uncomment to insert lots of diagnostic prints in extension code
+#verbose = True
+
+[provide_packages]
+# By default, matplotlib checks for a few dependencies and
+# installs them if missing. This feature can be turned off
+# by uncommenting the following lines. Acceptible values are:
+# True: install, overwrite an existing installation
+# False: do not install
+# auto: install only if the package is unavailable. This
+# is the default behavior
+#
+## Date/timezone support:
+pytz = True
+dateutil = True
+
+
+[gui_support]
+# Matplotlib supports multiple GUI toolkits, including Cocoa,
+# GTK, Fltk, MacOSX, Qt, Qt4, Tk, and WX. Support for many of
+# these toolkits requires AGG, the Anti-Grain Geometry library,
+# which is provided by matplotlib and built by default.
+#
+# Some backends are written in pure Python, and others require
+# extension code to be compiled. By default, matplotlib checks
+# for these GUI toolkits during installation and, if present,
+# compiles the required extensions to support the toolkit. GTK
+# support requires the GTK runtime environment and PyGTK. Wx
+# support requires wxWidgets and wxPython. Tk support requires
+# Tk and Tkinter. The other GUI toolkits do not require any
+# extension code, and can be used as long as the libraries are
+# installed on your system.
+#
+# You can uncomment any the following lines if you know you do
+# not want to use the GUI toolkit. Acceptible values are:
+# True: build the extension. Exits with a warning if the
+# required dependencies are not available
+# False: do not build the extension
+# auto: build if the required dependencies are available,
+# otherwise skip silently. This is the default
+# behavior
+#
+gtk = False
+gtkagg = False
+tkagg = True
+wxagg = False
+macosx = False
+
+[rc_options]
+# User-configurable options
+#
+# Default backend, one of: Agg, Cairo, CocoaAgg, GTK, GTKAgg, GTKCairo,
+# FltkAgg, MacOSX, Pdf, Ps, QtAgg, Qt4Agg, SVG, TkAgg, WX, WXAgg.
+#
+# The Agg, Ps, Pdf and SVG backends do not require external
+# dependencies. Do not choose GTK, GTKAgg, GTKCairo, MacOSX, TkAgg or WXAgg
+# if you have disabled the relevent extension modules. Agg will be used
+# by default.
+#
+backend = TkAgg
+#
+# The numerix module was historically used to provide
+# compatibility between the Numeric, numarray, and NumPy array
+# packages. Now that NumPy has emerge as the universal array
+# package for python, numerix is not really necessary and is
+# maintained to provide backward compatibility. Do not change
+# this unless you have a compelling reason to do so.
+#numerix = numpy
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ef...@us...> - 2009-05-25 01:22:24
|
Revision: 7139
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7139&view=rev
Author: efiring
Date: 2009-05-25 00:16:44 +0000 (Mon, 25 May 2009)
Log Message:
-----------
Improved version of previous commit: bug fix in Arc
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/patches.py
Modified: trunk/matplotlib/lib/matplotlib/patches.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/patches.py 2009-05-25 00:00:46 UTC (rev 7138)
+++ trunk/matplotlib/lib/matplotlib/patches.py 2009-05-25 00:16:44 UTC (rev 7139)
@@ -1189,10 +1189,9 @@
%(Patch)s
"""
- fill = kwargs.get('fill') # returns None if key is absent
+ fill = kwargs.setdefault('fill', False)
if fill:
raise ValueError("Arc objects can not be filled")
- kwargs['fill'] = False
Ellipse.__init__(self, xy, width, height, angle, **kwargs)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ef...@us...> - 2009-05-25 00:00:52
|
Revision: 7138
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7138&view=rev
Author: efiring
Date: 2009-05-25 00:00:46 +0000 (Mon, 25 May 2009)
Log Message:
-----------
Fix bug in Arc handling of fill kwarg; thanks to Tony Yu
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/patches.py
Modified: trunk/matplotlib/lib/matplotlib/patches.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/patches.py 2009-05-23 14:31:14 UTC (rev 7137)
+++ trunk/matplotlib/lib/matplotlib/patches.py 2009-05-25 00:00:46 UTC (rev 7138)
@@ -1189,7 +1189,7 @@
%(Patch)s
"""
- fill = kwargs.pop('fill')
+ fill = kwargs.get('fill') # returns None if key is absent
if fill:
raise ValueError("Arc objects can not be filled")
kwargs['fill'] = False
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|