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