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: <js...@us...> - 2008-01-10 13:01:42
|
Revision: 4836
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4836&view=rev
Author: jswhit
Date: 2008-01-10 05:01:38 -0800 (Thu, 10 Jan 2008)
Log Message:
-----------
move toolkits to mpl_toolkits, make mpl_toolkits a namespace package.
Modified Paths:
--------------
trunk/matplotlib/API_CHANGES
trunk/matplotlib/setup.py
trunk/matplotlib/setupegg.py
Added Paths:
-----------
trunk/matplotlib/lib/mpl_toolkits/
trunk/matplotlib/lib/mpl_toolkits/__init__.py
trunk/matplotlib/lib/mpl_toolkits/exceltools.py
trunk/matplotlib/lib/mpl_toolkits/gtktools.py
Removed Paths:
-------------
trunk/matplotlib/lib/matplotlib/toolkits/
Modified: trunk/matplotlib/API_CHANGES
===================================================================
--- trunk/matplotlib/API_CHANGES 2008-01-10 01:57:45 UTC (rev 4835)
+++ trunk/matplotlib/API_CHANGES 2008-01-10 13:01:38 UTC (rev 4836)
@@ -1,3 +1,5 @@
+ toolkits must now be imported from mpl_toolkits (not matplotlib.toolkits)
+
TRANSFORMS REFACTORING
The primary goal of this refactoring was to make it easier to
Added: trunk/matplotlib/lib/mpl_toolkits/__init__.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/__init__.py (rev 0)
+++ trunk/matplotlib/lib/mpl_toolkits/__init__.py 2008-01-10 13:01:38 UTC (rev 4836)
@@ -0,0 +1,4 @@
+try:
+ __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+ pass # must not have setuptools
Added: trunk/matplotlib/lib/mpl_toolkits/exceltools.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/exceltools.py (rev 0)
+++ trunk/matplotlib/lib/mpl_toolkits/exceltools.py 2008-01-10 13:01:38 UTC (rev 4836)
@@ -0,0 +1,120 @@
+"""
+Some io tools for excel -- requires pypyExcelerator
+
+Example usage:
+
+ import matplotlib.mlab as mlab
+ import matplotlib.toolkits.exceltools as exceltools
+
+ r = mlab.csv2rec('somefile.csv', checkrows=0)
+
+ formatd = dict(
+ weight = mlab.FormatFloat(2),
+ change = mlab.FormatPercent(2),
+ cost = mlab.FormatThousands(2),
+ )
+
+
+ exceltools.rec2excel(r, 'test.xls', formatd=formatd)
+ mlab.rec2csv(r, 'test.csv', formatd=formatd)
+
+"""
+import copy
+import numpy as npy
+import pyExcelerator as excel
+import matplotlib.cbook as cbook
+import matplotlib.mlab as mlab
+
+
+def xlformat_factory(format):
+ """
+ copy the format, perform any overrides, and attach an xlstyle instance
+ copied format is returned
+ """
+ format = copy.deepcopy(format)
+
+
+
+ xlstyle = excel.XFStyle()
+ if isinstance(format, mlab.FormatPercent):
+ zeros = ''.join(['0']*format.precision)
+ xlstyle.num_format_str = '0.%s%%;[RED]-0.%s%%'%(zeros, zeros)
+ format.scale = 1.
+ elif isinstance(format, mlab.FormatFloat):
+ zeros = ''.join(['0']*format.precision)
+ xlstyle.num_format_str = '#,##0.%s;[RED]-#,##0.%s'%(zeros, zeros)
+ elif isinstance(format, mlab.FormatInt):
+ xlstyle.num_format_str = '#,##;[RED]-#,##'
+ else:
+ xlstyle = None
+
+ format.xlstyle = xlstyle
+
+ return format
+
+def rec2excel(r, ws, formatd=None, rownum=0, colnum=0):
+ """
+ save record array r to excel pyExcelerator worksheet ws
+ starting at rownum. if ws is string like, assume it is a
+ filename and save to it
+
+ start writing at rownum, colnum
+
+ formatd is a dictionary mapping dtype name -> mlab.Format instances
+
+ The next rownum after writing is returned
+ """
+
+ autosave = False
+ if cbook.is_string_like(ws):
+ filename = ws
+ wb = excel.Workbook()
+ ws = wb.add_sheet('worksheet')
+ autosave = True
+
+
+ if formatd is None:
+ formatd = dict()
+
+ formats = []
+ font = excel.Font()
+ font.bold = True
+
+ stylehdr = excel.XFStyle()
+ stylehdr.font = font
+
+ for i, name in enumerate(r.dtype.names):
+ dt = r.dtype[name]
+ format = formatd.get(name)
+ if format is None:
+ format = mlab.defaultformatd.get(dt.type, mlab.FormatObj())
+
+ format = xlformat_factory(format)
+ ws.write(rownum, colnum+i, name, stylehdr)
+ formats.append(format)
+
+ rownum+=1
+
+
+ ind = npy.arange(len(r.dtype.names))
+ for row in r:
+ for i in ind:
+ val = row[i]
+ format = formats[i]
+ val = format.toval(val)
+ if format.xlstyle is None:
+ ws.write(rownum, colnum+i, val)
+ else:
+ if mlab.safe_isnan(val):
+ ws.write(rownum, colnum+i, 'NaN')
+ else:
+ ws.write(rownum, colnum+i, val, format.xlstyle)
+ rownum += 1
+
+ if autosave:
+ wb.save(filename)
+ return rownum
+
+
+
+
Added: trunk/matplotlib/lib/mpl_toolkits/gtktools.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/gtktools.py (rev 0)
+++ trunk/matplotlib/lib/mpl_toolkits/gtktools.py 2008-01-10 13:01:38 UTC (rev 4836)
@@ -0,0 +1,299 @@
+"""
+
+Some gtk specific tools and widgets
+
+ * rec2gtk : put record array in GTK treeview - requires gtk
+
+Example usage
+
+ import matplotlib.mlab as mlab
+ import matplotlib.toolkits.gtktools as gtktools
+
+ r = mlab.csv2rec('somefile.csv', checkrows=0)
+
+ formatd = dict(
+ weight = mlab.FormatFloat(2),
+ change = mlab.FormatPercent(2),
+ cost = mlab.FormatThousands(2),
+ )
+
+
+ exceltools.rec2excel(r, 'test.xls', formatd=formatd)
+ mlab.rec2csv(r, 'test.csv', formatd=formatd)
+
+
+ import gtk
+ scroll = gtktools.rec2gtk(r, formatd=formatd)
+ win = gtk.Window()
+ win.set_size_request(600,800)
+ win.add(scroll)
+ win.show_all()
+ gtk.main()
+
+"""
+import copy
+import gtk, gobject
+import numpy as npy
+import matplotlib.cbook as cbook
+import matplotlib.mlab as mlab
+
+def gtkformat_factory(format, colnum):
+ """
+ copy the format, perform any overrides, and attach an gtk style attrs
+
+
+ xalign = 0.
+ cell = None
+
+ """
+
+ format = copy.copy(format)
+ format.xalign = 0.
+ format.cell = None
+
+ def negative_red_cell(column, cell, model, thisiter):
+ val = model.get_value(thisiter, colnum)
+ try: val = float(val)
+ except: cell.set_property('foreground', 'black')
+ else:
+ if val<0:
+ cell.set_property('foreground', 'red')
+ else:
+ cell.set_property('foreground', 'black')
+
+
+ if isinstance(format, mlab.FormatFloat) or isinstance(format, mlab.FormatInt):
+ format.cell = negative_red_cell
+ format.xalign = 1.
+ elif isinstance(format, mlab.FormatDate):
+ format.xalign = 1.
+ return format
+
+
+
+class SortedStringsScrolledWindow(gtk.ScrolledWindow):
+ """
+ A simple treeview/liststore assuming all columns are strings.
+ Supports ascending/descending sort by clicking on column header
+ """
+
+ def __init__(self, colheaders, formatterd=None):
+ """
+ xalignd if not None, is a dict mapping col header to xalignent (default 1)
+
+ formatterd if not None, is a dict mapping col header to a ColumnFormatter
+ """
+
+
+ gtk.ScrolledWindow.__init__(self)
+ self.colheaders = colheaders
+ self.seq = None # not initialized with accts
+ self.set_shadow_type(gtk.SHADOW_ETCHED_IN)
+ self.set_policy(gtk.POLICY_AUTOMATIC,
+ gtk.POLICY_AUTOMATIC)
+
+ types = [gobject.TYPE_STRING] * len(colheaders)
+ model = self.model = gtk.ListStore(*types)
+
+
+ treeview = gtk.TreeView(self.model)
+ treeview.show()
+ treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
+ treeview.set_rules_hint(True)
+
+
+ class Clicked:
+ def __init__(self, parent, i):
+ self.parent = parent
+ self.i = i
+ self.num = 0
+
+ def __call__(self, column):
+ ind = []
+ dsu = []
+ for rownum, thisiter in enumerate(self.parent.iters):
+ val = model.get_value(thisiter, self.i)
+ try: val = float(val.strip().rstrip('%'))
+ except ValueError: pass
+ if npy.isnan(val): val = npy.inf # force nan to sort uniquely
+ dsu.append((val, rownum))
+ dsu.sort()
+ if not self.num%2: dsu.reverse()
+
+ vals, otherind = zip(*dsu)
+ ind.extend(otherind)
+
+ self.parent.model.reorder(ind)
+ newiters = []
+ for i in ind:
+ newiters.append(self.parent.iters[i])
+ self.parent.iters = newiters[:]
+ for i, thisiter in enumerate(self.parent.iters):
+ key = tuple([self.parent.model.get_value(thisiter, j) for j in range(len(colheaders))])
+ self.parent.rownumd[i] = key
+
+ self.num+=1
+
+
+ if formatterd is None:
+ formatterd = dict()
+
+ formatterd = formatterd.copy()
+
+ for i, header in enumerate(colheaders):
+ renderer = gtk.CellRendererText()
+ if header not in formatterd:
+ formatterd[header] = ColumnFormatter()
+ formatter = formatterd[header]
+
+ column = gtk.TreeViewColumn(header, renderer, text=i)
+ renderer.set_property('xalign', formatter.xalign)
+ column.connect('clicked', Clicked(self, i))
+ column.set_property('clickable', True)
+
+ if formatter.cell is not None:
+ column.set_cell_data_func(renderer, formatter.cell)
+
+ treeview.append_column(column)
+
+
+
+ self.formatterd = formatterd
+ self.lastcol = column
+ self.add(treeview)
+ self.treeview = treeview
+ self.clear()
+
+ def clear(self):
+ self.iterd = dict()
+ self.iters = [] # an ordered list of iters
+ self.rownumd = dict() # a map from rownum -> symbol
+ self.model.clear()
+ self.datad = dict()
+
+
+ def flat(self, row):
+ seq = []
+ for i,val in enumerate(row):
+ formatter = self.formatterd.get(self.colheaders[i])
+ seq.extend([i,formatter.tostr(val)])
+ return seq
+
+ def __delete_selected(self, *unused): # untested
+
+
+ keyd = dict([(thisiter, key) for key, thisiter in self.iterd.values()])
+ for row in self.get_selected():
+ key = tuple(row)
+ thisiter = self.iterd[key]
+ self.model.remove(thisiter)
+ del self.datad[key]
+ del self.iterd[key]
+ self.iters.remove(thisiter)
+
+ for i, thisiter in enumerate(self.iters):
+ self.rownumd[i] = keyd[thisiter]
+
+
+
+ def delete_row(self, row):
+ key = tuple(row)
+ thisiter = self.iterd[key]
+ self.model.remove(thisiter)
+
+
+ del self.datad[key]
+ del self.iterd[key]
+ self.rownumd[len(self.iters)] = key
+ self.iters.remove(thisiter)
+
+ for rownum, thiskey in self.rownumd.items():
+ if thiskey==key: del self.rownumd[rownum]
+
+ def add_row(self, row):
+ thisiter = self.model.append()
+ self.model.set(thisiter, *self.flat(row))
+ key = tuple(row)
+ self.datad[key] = row
+ self.iterd[key] = thisiter
+ self.rownumd[len(self.iters)] = key
+ self.iters.append(thisiter)
+
+ def update_row(self, rownum, newrow):
+ key = self.rownumd[rownum]
+ thisiter = self.iterd[key]
+ newkey = tuple(newrow)
+
+ self.rownumd[rownum] = newkey
+ del self.datad[key]
+ del self.iterd[key]
+ self.datad[newkey] = newrow
+ self.iterd[newkey] = thisiter
+
+
+ self.model.set(thisiter, *self.flat(newrow))
+
+ def get_row(self, rownum):
+ key = self.rownumd[rownum]
+ return self.datad[key]
+
+ def get_selected(self):
+ selected = []
+ def foreach(model, path, iter, selected):
+ selected.append(model.get_value(iter, 0))
+
+ self.treeview.get_selection().selected_foreach(foreach, selected)
+ return selected
+
+
+
+def rec2gtk(r, formatd=None, rownum=0, autowin=True):
+ """
+ save record array r to excel pyExcelerator worksheet ws
+ starting at rownum. if ws is string like, assume it is a
+ filename and save to it
+
+ formatd is a dictionary mapping dtype name -> mlab.Format instances
+
+ This function creates a SortedStringsScrolledWindow (derived
+ from gtk.ScrolledWindow) and returns it. if autowin is True,
+ a gtk.Window is created, attached to the
+ SortedStringsScrolledWindow instance, shown and returned. If
+ autowin=False, the caller is responsible for adding the
+ SortedStringsScrolledWindow instance to a gtk widget and
+ showing it.
+ """
+
+
+
+ if formatd is None:
+ formatd = dict()
+
+ formats = []
+ for i, name in enumerate(r.dtype.names):
+ dt = r.dtype[name]
+ format = formatd.get(name)
+ if format is None:
+ format = mlab.defaultformatd.get(dt.type, mlab.FormatObj())
+ #print 'gtk fmt factory', i, name, format, type(format)
+ format = gtkformat_factory(format, i)
+ formatd[name] = format
+
+
+ colheaders = r.dtype.names
+ scroll = SortedStringsScrolledWindow(colheaders, formatd)
+
+ ind = npy.arange(len(r.dtype.names))
+ for row in r:
+ scroll.add_row(row)
+
+
+ if autowin:
+ win = gtk.Window()
+ win.set_default_size(800,600)
+ win.add(scroll)
+ win.show_all()
+ scroll.win = win
+
+ return scroll
+
Modified: trunk/matplotlib/setup.py
===================================================================
--- trunk/matplotlib/setup.py 2008-01-10 01:57:45 UTC (rev 4835)
+++ trunk/matplotlib/setup.py 2008-01-10 13:01:38 UTC (rev 4836)
@@ -55,7 +55,8 @@
'matplotlib',
'matplotlib.backends',
'matplotlib.projections',
- 'matplotlib.toolkits',
+# 'matplotlib.toolkits',
+ 'mpl_toolkits',
'matplotlib.numerix',
'matplotlib.numerix.mlab',
'matplotlib.numerix.ma',
Modified: trunk/matplotlib/setupegg.py
===================================================================
--- trunk/matplotlib/setupegg.py 2008-01-10 01:57:45 UTC (rev 4835)
+++ trunk/matplotlib/setupegg.py 2008-01-10 13:01:38 UTC (rev 4836)
@@ -5,4 +5,4 @@
from setuptools import setup
execfile('setup.py',
{'additional_params' :
- {'namespace_packages' : ['matplotlib.toolkits']}})
+ {'namespace_packages' : ['mpl_toolkits']}})
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jd...@us...> - 2008-01-10 01:57:48
|
Revision: 4835
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4835&view=rev
Author: jdh2358
Date: 2008-01-09 17:57:45 -0800 (Wed, 09 Jan 2008)
Log Message:
-----------
bumped the svn __version__ number
Modified Paths:
--------------
trunk/matplotlib/MIGRATION.txt
trunk/matplotlib/lib/matplotlib/__init__.py
Modified: trunk/matplotlib/MIGRATION.txt
===================================================================
--- trunk/matplotlib/MIGRATION.txt 2008-01-09 21:41:49 UTC (rev 4834)
+++ trunk/matplotlib/MIGRATION.txt 2008-01-10 01:57:45 UTC (rev 4835)
@@ -29,8 +29,16 @@
> svn co https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/trunk/matplotlib
If you already have a working copy of the trunk, your next "svn up" will
-include the latest transforms changes.
+include the latest transforms changes.
+Before installing, make sure you completely remove the old matplotlib
+build and install directories, eg:
+
+ > cd matplotlib
+ > sudo rm -rf build
+ > sudo rm -rf /usr/local/lib/python2.5/site-packages/matplotlib
+ > sudo python setup.py install
+
Using the old svn code
======================
Modified: trunk/matplotlib/lib/matplotlib/__init__.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/__init__.py 2008-01-09 21:41:49 UTC (rev 4834)
+++ trunk/matplotlib/lib/matplotlib/__init__.py 2008-01-10 01:57:45 UTC (rev 4835)
@@ -55,7 +55,7 @@
"""
from __future__ import generators
-__version__ = '0.91.2svn'
+__version__ = '0.98pre'
__revision__ = '$Revision$'
__date__ = '$Date$'
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-09 21:41:51
|
Revision: 4834
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4834&view=rev
Author: mdboom
Date: 2008-01-09 13:41:49 -0800 (Wed, 09 Jan 2008)
Log Message:
-----------
Fixed possible buffer overrun.
Modified Paths:
--------------
trunk/matplotlib/src/agg_py_path_iterator.h
Modified: trunk/matplotlib/src/agg_py_path_iterator.h
===================================================================
--- trunk/matplotlib/src/agg_py_path_iterator.h 2008-01-09 21:27:48 UTC (rev 4833)
+++ trunk/matplotlib/src/agg_py_path_iterator.h 2008-01-09 21:41:49 UTC (rev 4834)
@@ -43,7 +43,7 @@
Py_XDECREF(m_codes);
}
- static const char code_map[];
+ static const unsigned code_map[];
private:
inline unsigned vertex(unsigned idx, double* x, double* y)
@@ -66,7 +66,8 @@
{
if (m_iterator >= m_total_vertices) return agg::path_cmd_stop;
unsigned code = vertex(m_iterator++, x, y);
- while (MPL_isnan64(*x) || MPL_isnan64(*y)) {
+ while ((MPL_isnan64(*x) || MPL_isnan64(*y)) &&
+ m_iterator < m_total_vertices) {
vertex(m_iterator++, x, y);
code = agg::path_cmd_move_to;
}
@@ -90,7 +91,7 @@
};
// Maps path codes on the Python side to agg path commands
-const char PathIterator::code_map[] =
+const unsigned PathIterator::code_map[] =
{0,
agg::path_cmd_move_to,
agg::path_cmd_line_to,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-09 21:27:49
|
Revision: 4833
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4833&view=rev
Author: mdboom
Date: 2008-01-09 13:27:48 -0800 (Wed, 09 Jan 2008)
Log Message:
-----------
Handle NaNs in the data (on-the-fly as it's drawn).
Add a nan_test.py example to help ensure this stays working.
Modified Paths:
--------------
trunk/matplotlib/examples/backend_driver.py
trunk/matplotlib/lib/matplotlib/path.py
trunk/matplotlib/src/agg_py_path_iterator.h
Added Paths:
-----------
trunk/matplotlib/examples/nan_test.py
Modified: trunk/matplotlib/examples/backend_driver.py
===================================================================
--- trunk/matplotlib/examples/backend_driver.py 2008-01-09 19:35:54 UTC (rev 4832)
+++ trunk/matplotlib/examples/backend_driver.py 2008-01-09 21:27:48 UTC (rev 4833)
@@ -71,6 +71,7 @@
'mathtext_demo.py',
'mri_with_eeg.py',
'multiple_figs_demo.py',
+ 'nan_test.py',
'pcolor_demo.py',
'pcolor_demo2.py',
'pcolor_small.py',
Added: trunk/matplotlib/examples/nan_test.py
===================================================================
--- trunk/matplotlib/examples/nan_test.py (rev 0)
+++ trunk/matplotlib/examples/nan_test.py 2008-01-09 21:27:48 UTC (rev 4833)
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+"""
+Example: simple line plot with NaNs inserted.
+"""
+from pylab import *
+
+t = arange(0.0, 1.0+0.01, 0.01)
+s = cos(2*2*pi*t)
+t[41:60] = NaN
+plot(t, s, '-', lw=2)
+
+xlabel('time (s)')
+ylabel('voltage (mV)')
+title('A sine wave with a gap of NaN\'s between 0.4 and 0.6')
+grid(True)
+
+#savefig('simple_plot.png')
+savefig('nan_test')
+
+show()
Property changes on: trunk/matplotlib/examples/nan_test.py
___________________________________________________________________
Name: svn:executable
+ *
Modified: trunk/matplotlib/lib/matplotlib/path.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/path.py 2008-01-09 19:35:54 UTC (rev 4832)
+++ trunk/matplotlib/lib/matplotlib/path.py 2008-01-09 21:27:48 UTC (rev 4833)
@@ -93,8 +93,10 @@
correct places to jump over the masked regions.
"""
if ma.isMaskedArray(vertices):
+ is_mask = True
mask = ma.getmask(vertices)
else:
+ is_mask = False
vertices = npy.asarray(vertices, npy.float_)
mask = ma.nomask
@@ -108,17 +110,21 @@
# itself), are not expected to deal with masked arrays, so we
# must remove them from the array (using compressed), and add
# MOVETO commands to the codes array accordingly.
- if mask is not ma.nomask:
- mask1d = ma.mask_or(mask[:, 0], mask[:, 1])
- if codes is None:
- codes = self.LINETO * npy.ones(
- len(vertices), self.code_type)
- codes[0] = self.MOVETO
- vertices = ma.compress(npy.invert(mask1d), vertices, 0)
- codes = npy.where(npy.concatenate((mask1d[-1:], mask1d[:-1])),
- self.MOVETO, codes)
- codes = ma.masked_array(codes, mask=mask1d).compressed()
- codes = npy.asarray(codes, self.code_type)
+ if is_mask:
+ if mask is not ma.nomask:
+ mask1d = ma.mask_or(mask[:, 0], mask[:, 1])
+ if codes is None:
+ codes = self.LINETO * npy.ones(
+ len(vertices), self.code_type)
+ codes[0] = self.MOVETO
+ vertices = ma.compress(npy.invert(mask1d), vertices, 0)
+ vertices = npy.asarray(vertices)
+ codes = npy.where(npy.concatenate((mask1d[-1:], mask1d[:-1])),
+ self.MOVETO, codes)
+ codes = ma.masked_array(codes, mask=mask1d).compressed()
+ codes = npy.asarray(codes, self.code_type)
+ else:
+ vertices = npy.asarray(vertices, npy.float_)
assert vertices.ndim == 2
assert vertices.shape[1] == 2
@@ -161,8 +167,13 @@
Iterates over all of the curve segments in the path.
"""
vertices = self.vertices
+ if not len(vertices):
+ return
+
codes = self.codes
len_vertices = len(vertices)
+ isnan = npy.isnan
+ any = npy.any
NUM_VERTICES = self.NUM_VERTICES
MOVETO = self.MOVETO
@@ -170,15 +181,17 @@
CLOSEPOLY = self.CLOSEPOLY
STOP = self.STOP
- if not len(vertices):
- return
-
if codes is None:
- yield vertices[0], MOVETO
- for v in vertices[1:]:
- yield v, LINETO
+ next_code = MOVETO
+ for v in vertices:
+ if any(isnan(v)):
+ next_code = MOVETO
+ else:
+ yield v, next_code
+ next_code = LINETO
else:
i = 0
+ was_nan = False
while i < len_vertices:
code = codes[i]
if code == CLOSEPOLY:
@@ -188,7 +201,14 @@
return
else:
num_vertices = NUM_VERTICES[code]
- yield vertices[i:i+num_vertices].flatten(), code
+ curr_vertices = vertices[i:i+num_vertices].flatten()
+ if any(isnan(curr_vertices)):
+ was_nan = True
+ elif was_nan:
+ yield curr_vertices[-2:], MOVETO
+ was_nan = False
+ else:
+ yield curr_vertices, code
i += num_vertices
def transformed(self, transform):
Modified: trunk/matplotlib/src/agg_py_path_iterator.h
===================================================================
--- trunk/matplotlib/src/agg_py_path_iterator.h 2008-01-09 19:35:54 UTC (rev 4832)
+++ trunk/matplotlib/src/agg_py_path_iterator.h 2008-01-09 21:27:48 UTC (rev 4833)
@@ -5,6 +5,7 @@
#define PY_ARRAY_TYPES_PREFIX NumPy
#include "numpy/arrayobject.h"
#include "agg_path_storage.h"
+#include "MPL_isnan.h"
class PathIterator
{
@@ -64,7 +65,12 @@
inline unsigned vertex(double* x, double* y)
{
if (m_iterator >= m_total_vertices) return agg::path_cmd_stop;
- return vertex(m_iterator++, x, y);
+ unsigned code = vertex(m_iterator++, x, y);
+ while (MPL_isnan64(*x) || MPL_isnan64(*y)) {
+ vertex(m_iterator++, x, y);
+ code = agg::path_cmd_move_to;
+ }
+ return code;
}
inline void rewind(unsigned path_id)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ef...@us...> - 2008-01-09 19:35:57
|
Revision: 4832
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4832&view=rev
Author: efiring
Date: 2008-01-09 11:35:54 -0800 (Wed, 09 Jan 2008)
Log Message:
-----------
Streamline quiver by combining X and Y in Nx2 array
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/axes.py
trunk/matplotlib/lib/matplotlib/quiver.py
Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py 2008-01-09 19:08:08 UTC (rev 4831)
+++ trunk/matplotlib/lib/matplotlib/axes.py 2008-01-09 19:35:54 UTC (rev 4832)
@@ -1215,7 +1215,7 @@
if not ma.isMaskedArray(xys):
xys = npy.asarray(xys)
self.dataLim.update_from_data_xy(xys, self.ignore_existing_data_limits)
- self.ignore_existing_data_limits = False
+ self.ignore_existing_data_limits = False
def update_datalim_numerix(self, x, y):
'Update the data lim bbox with seq of xy tups'
@@ -1223,8 +1223,8 @@
# limits and set the bound to be the bounds of the xydata.
# Otherwise, it will compute the bounds of it's current data
# and the data in xydata
- self.dataLim.update_from_data(x, y, self.ignore_existing_data_limits)
- self.ignore_existing_data_limits = False
+ self.dataLim.update_from_data(x, y, self.ignore_existing_data_limits)
+ self.ignore_existing_data_limits = False
def update_datalim_bounds(self, bounds):
'Update the datalim to include the given Bbox'
@@ -4388,7 +4388,7 @@
"""
q = mquiver.Quiver(self, *args, **kw)
self.add_collection(q, False)
- self.update_datalim_numerix(q.X, q.Y)
+ self.update_datalim(q.XY)
self.autoscale_view()
return q
quiver.__doc__ = mquiver.Quiver.quiver_doc
Modified: trunk/matplotlib/lib/matplotlib/quiver.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/quiver.py 2008-01-09 19:08:08 UTC (rev 4831)
+++ trunk/matplotlib/lib/matplotlib/quiver.py 2008-01-09 19:35:54 UTC (rev 4832)
@@ -267,6 +267,7 @@
X, Y, U, V, C = self._parse_args(*args)
self.X = X
self.Y = Y
+ self.XY = npy.hstack((X[:,npy.newaxis], Y[:,npy.newaxis]))
self.N = len(X)
self.scale = kw.pop('scale', None)
self.headwidth = kw.pop('headwidth', 3)
@@ -280,7 +281,7 @@
self.pivot = kw.pop('pivot', 'tail')
kw.setdefault('facecolors', self.color)
kw.setdefault('linewidths', (0,))
- collections.PolyCollection.__init__(self, [], offsets=zip(X, Y),
+ collections.PolyCollection.__init__(self, [], offsets=self.XY,
transOffset=ax.transData, **kw)
self.polykw = kw
self.set_UVC(U, V, C)
@@ -307,7 +308,7 @@
nr = 1
if len(nn) > 1:
nr = nn[1]
- if len(args) == 2:
+ if len(args) == 2: # remaining after removing U,V,C
X, Y = [npy.array(a).ravel() for a in args]
if len(X) == nc and len(Y) == nr:
X, Y = [a.ravel() for a in npy.meshgrid(X, Y)]
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ds...@us...> - 2008-01-09 19:08:24
|
Revision: 4831
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4831&view=rev
Author: dsdale
Date: 2008-01-09 11:08:08 -0800 (Wed, 09 Jan 2008)
Log Message:
-----------
added figure.autolayout setting to traited config
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/config/mplconfig.py
trunk/matplotlib/lib/matplotlib/config/rcsetup.py
trunk/matplotlib/lib/matplotlib/mpl-data/matplotlib.conf.template
Modified: trunk/matplotlib/lib/matplotlib/config/mplconfig.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/config/mplconfig.py 2008-01-09 18:52:16 UTC (rev 4830)
+++ trunk/matplotlib/lib/matplotlib/config/mplconfig.py 2008-01-09 19:08:08 UTC (rev 4831)
@@ -238,6 +238,7 @@
dpi = T.Float(80)
facecolor = T.Trait('0.75', mplT.ColorHandler())
edgecolor = T.Trait('white', mplT.ColorHandler())
+ autolayout = T.false
class subplot(TConfig):
"""The figure subplot parameters. All dimensions are fraction
@@ -407,6 +408,7 @@
'figure.dpi' : (self.tconfig.figure, 'dpi'),
'figure.facecolor' : (self.tconfig.figure, 'facecolor'),
'figure.edgecolor' : (self.tconfig.figure, 'edgecolor'),
+ 'figure.autolayout' : (self.tconfig.figure, 'autolayout'),
'figure.subplot.left' : (self.tconfig.figure.subplot, 'left'),
'figure.subplot.right' : (self.tconfig.figure.subplot, 'right'),
Modified: trunk/matplotlib/lib/matplotlib/config/rcsetup.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/config/rcsetup.py 2008-01-09 18:52:16 UTC (rev 4830)
+++ trunk/matplotlib/lib/matplotlib/config/rcsetup.py 2008-01-09 19:08:08 UTC (rev 4831)
@@ -435,10 +435,11 @@
# figure props
# figure size in inches: width by height
- 'figure.figsize' : [ [8.0,6.0], validate_nseq_float(2)],
- 'figure.dpi' : [ 80, validate_float], # DPI
- 'figure.facecolor' : [ '0.75', validate_color], # facecolor; scalar gray
- 'figure.edgecolor' : [ 'w', validate_color], # edgecolor; white
+ 'figure.figsize' : [[8.0,6.0], validate_nseq_float(2)],
+ 'figure.dpi' : [80, validate_float], # DPI
+ 'figure.facecolor' : ['0.75', validate_color], # facecolor; scalar gray
+ 'figure.edgecolor' : ['w', validate_color], # edgecolor; white
+ 'figure.autolayout' : [False, validate_bool],
'figure.subplot.left' : [0.125, ValidateInterval(0, 1, closedmin=False, closedmax=False)],
'figure.subplot.right' : [0.9, ValidateInterval(0, 1, closedmin=False, closedmax=False)],
Modified: trunk/matplotlib/lib/matplotlib/mpl-data/matplotlib.conf.template
===================================================================
--- trunk/matplotlib/lib/matplotlib/mpl-data/matplotlib.conf.template 2008-01-09 18:52:16 UTC (rev 4830)
+++ trunk/matplotlib/lib/matplotlib/mpl-data/matplotlib.conf.template 2008-01-09 19:08:08 UTC (rev 4831)
@@ -1,59 +1,59 @@
# MPLConfig - plaintext (in .conf format)
# This is a sample matplotlib configuration file. It should be placed
-# in HOME/.matplotlib/matplotlibrc (unix/linux like systems) and
+# in HOME/.matplotlib (unix/linux like systems) and
# C:\Documents and Settings\yourname\.matplotlib (win32 systems)
-#
+#
# By default, the installer will overwrite the existing file in the install
# path, so if you want to preserve yours, please move it to your HOME dir and
# set the environment variable if necessary.
-#
+#
# This file is best viewed in a editor which supports ini or conf mode syntax
# highlighting.
-#
+#
# Blank lines, or lines starting with a comment symbol, are ignored,
# as are trailing comments. Other lines must have the format
-#
+#
# key = val optional comment
-#
+#
# val should be valid python syntax, just as you would use when setting
# properties using rcParams. This should become more obvious by inspecting
# the default values listed herein.
-#
+#
# Colors: for the color values below, you can either use
# - a matplotlib color string, such as r | k | b
# - an rgb tuple, such as (1.0, 0.5, 0.0)
# - a hex string, such as #ff00ff or ff00ff
# - a scalar grayscale intensity such as 0.75
# - a legal html color name, eg red | blue | darkslategray
-#
+#
# Interactivity: see http://matplotlib.sourceforge.net/interactive.html.
-#
+#
# ### CONFIGURATION BEGINS HERE ###
# a value of type 'str'
datapath = '/usr/lib64/python2.5/site-packages/matplotlib/mpl-data'
# one of: 0 | on | false | 1 | no | n | y | off | yes | true
interactive = False
-# a value of type 'bool'
+# a boolean
maskedarray = False
# 'numpy' or 'numeric' or 'numarray'
numerix = 'numpy'
# 'Africa/Abidjan' or 'Africa/Accra' or 'Africa/Addis_Ababa' or
# 'Africa/Algiers' or 'Africa/Asmara' or 'Africa/Asmera' or 'Africa/Bamako' or
# 'Africa/Bangui' or 'Africa/Banjul' or 'Africa/Bissau' or 'Africa/Blantyre'
-# <...snipped 156 lines...>
+# <...snipped 156 lines...>
# 'US/Michigan' or 'US/Mountain' or 'US/Pacific' or 'US/Pacific-New' or
# 'US/Samoa' or 'UTC' or 'Universal' or 'W-SU' or 'WET' or 'Zulu' or
# 'posixrules'
timezone = 'UTC'
# 'toolbar2' or None
toolbar = 'toolbar2'
-# a value of type 'bool'
+# a boolean
units = False
[axes]
- # a value of type 'bool'
+ # a boolean
axisbelow = False
# any valid matplotlib color, eg an abbreviation like 'r' for red, a full
# name like 'orange', a hex color like '#efefef', a grayscale intensity
@@ -71,19 +71,19 @@
# name like 'orange', a hex color like '#efefef', a grayscale intensity
# like '0.5', or an RGBA tuple (1,0,0,1)
labelcolor = 'black'
- # a value of type 'float' or 'xx-small' or 'x-small' or 'small' or
- # 'medium' or 'large' or 'x-large' or 'xx-large'
+ # a float or 'xx-small' or 'x-small' or 'small' or 'medium' or 'large' or
+ # 'x-large' or 'xx-large'
labelsize = 'medium'
- # a value of type 'float'
+ # a float
linewidth = 1.0
# one of: 0 | on | false | 1 | no | n | y | off | yes | true
polargrid = True
- # a value of type 'float' or 'xx-small' or 'x-small' or 'small' or
- # 'medium' or 'large' or 'x-large' or 'xx-large'
+ # a float or 'xx-small' or 'x-small' or 'small' or 'medium' or 'large' or
+ # 'x-large' or 'xx-large'
titlesize = 'large'
[[formatter]]
- # a list of from 2 to 2 items each of which is a value of type 'float'
+ # a list of from 2 to 2 items which are a float
limits = [-7.0, 7.0]
[backend]
@@ -100,43 +100,44 @@
compression = 6
# 3 or 42
fonttype = 3
- # a value of type 'bool'
+ # a boolean
inheritcolor = False
- # a value of type 'bool'
+ # a boolean
use14corefonts = False
[[ps]]
# 3 or 42
fonttype = 3
- # auto | letter | legal | ledger | A0 | A1 | A2 |
- # A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 |
- # B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8
- # | B9 | B10
+ # 'auto' or 'letter' or 'legal' or 'ledger' or 'A0' or 'A1' or 'A2' or
+ # 'A3' or 'A4' or 'A5' or 'A6' or 'A7' or 'A8' or 'A9' or 'A10' or
+ # 'B0' or 'B1' or 'B2' or 'B3' or 'B4' or 'B5' or 'B6' or 'B7' or 'B8'
+ # or 'B9' or 'B10'
papersize = 'letter'
- # a value of type 'bool'
+ # a boolean
useafm = False
[[[distiller]]]
- # a value of type 'float'
- resolution = 6000.0
- # a bool or None or 'ghostscript' or 'xpdf'
+ # a float
+ resolution = 6000
+ # an implementor of, or can be adapted to implement, bool or None
+ # or None or 'ghostscript' or 'xpdf'
use = None
[[svg]]
- # a value of type 'bool'
+ # a boolean
embed_chars = True
- # a value of type 'bool'
+ # a boolean
image_inline = True
- # a value of type 'bool'
+ # a boolean
image_noscale = False
[[tk]]
# window_focus : Maintain shell focus for TkAgg
# pythoninspect: tk sets PYTHONINSPECT
- # a value of type 'bool'
+ # a boolean
pythoninspect = False
- # a value of type 'bool'
+ # a boolean
window_focus = False
[contour]
@@ -144,8 +145,10 @@
negative_linestyle = 'dashed'
[figure]
- # a value of type 'float'
- dpi = 80.0
+ # a boolean
+ autolayout = False
+ # a float
+ dpi = 80
# any valid matplotlib color, eg an abbreviation like 'r' for red, a full
# name like 'orange', a hex color like '#efefef', a grayscale intensity
# like '0.5', or an RGBA tuple (1,0,0,1)
@@ -154,39 +157,39 @@
# name like 'orange', a hex color like '#efefef', a grayscale intensity
# like '0.5', or an RGBA tuple (1,0,0,1)
facecolor = '0.75'
- # a list of from 2 to 2 items each of which is a value of type 'float'
+ # a list of from 2 to 2 items which are a float
figsize = [8.0, 6.0]
[[subplot]]
# The figure subplot parameters. All dimensions are fraction
# of the figure width or height
- # a value of type 'float'
+ # a float
bottom = 0.10000000000000001
- # a value of type 'float'
+ # a float
hspace = 0.20000000000000001
- # a value of type 'float'
+ # a float
left = 0.125
- # a value of type 'float'
+ # a float
right = 0.90000000000000002
- # a value of type 'float'
+ # a float
top = 0.90000000000000002
- # a value of type 'float'
+ # a float
wspace = 0.20000000000000001
[font]
- # a list of items each of which is a value of type 'str'
+ # a list of items which are a value of type 'str'
cursive = ['Apple Chancery', 'Textile', 'Zapf Chancery', 'Sand', 'cursive']
# 'sans-serif' or 'serif' or 'cursive' or 'fantasy' or 'monospace'
family = 'sans-serif'
- # a list of items each of which is a value of type 'str'
+ # a list of items which are a value of type 'str'
fantasy = ['Comic Sans MS', 'Chicago', 'Charcoal', 'Impact', 'Western', 'fantasy']
- # a list of items each of which is a value of type 'str'
+ # a list of items which are a value of type 'str'
monospace = ['Bitstream Vera Sans Mono', 'Andale Mono', 'Nimbus Mono L', 'Courier New', 'Courier', 'Fixed', 'Terminal', 'monospace']
- # a list of items each of which is a value of type 'str'
+ # a list of items which are a value of type 'str'
sans_serif = ['Bitstream Vera Sans', 'Lucida Grande', 'Verdana', 'Geneva', 'Lucid', 'Arial', 'Helvetica', 'Avant Garde', 'sans-serif']
- # a list of items each of which is a value of type 'str'
+ # a list of items which are a value of type 'str'
serif = ['Bitstream Vera Serif', 'New Century Schoolbook', 'Century Schoolbook L', 'Utopia', 'ITC Bookman', 'Bookman', 'Nimbus Roman No9 L', 'Times New Roman', 'Times', 'Palatino', 'Charter', 'serif']
- # a value of type 'float'
+ # a float
size = 12.0
# 'ultra-condensed' or 'extra-condensed' or 'condensed' or
# 'semi-condensed' or 'normal' or 'semi-expanded' or 'expanded' or
@@ -207,16 +210,16 @@
color = 'black'
# '-' or '--' or '-.' or ':' or 'steps' or '' or ' '
linestyle = ':'
- # a value of type 'float'
+ # a float
linewidth = 0.5
[image]
- # a value of type 'float' or 'equal' or 'auto'
+ # a float or 'equal' or 'auto'
aspect = 'equal'
# 'Accent' or 'Accent_r' or 'Blues' or 'Blues_r' or 'BrBG' or 'BrBG_r' or
# 'BuGn' or 'BuGn_r' or 'BuPu' or 'BuPu_r' or 'Dark2' or 'Dark2_r' or
# 'GnBu' or 'GnBu_r' or 'Greens' or 'Greens_r' or 'Greys' or 'Greys_r' or
- # <...snipped 16 lines...>
+ # <...snipped 16 lines...>
# 'pink_r' or 'prism' or 'prism_r' or 'spectral' or 'spectral_r' or
# 'spring' or 'spring_r' or 'summer' or 'summer_r' or 'winter' or
# 'winter_r'
@@ -226,40 +229,40 @@
# or 'gaussian' or 'bessel' or 'mitchell' or 'sinc' or 'lanczos' or
# 'blackman'
interpolation = 'bilinear'
- # a value of type 'int'
+ # an integer
lut = 256
# 'upper' or 'lower'
origin = 'upper'
[legend]
- # a value of type 'float'
+ # a float
axespad = 0.02
- # a value of type 'float' or 'xx-small' or 'x-small' or 'small' or
- # 'medium' or 'large' or 'x-large' or 'xx-large'
+ # a float or 'xx-small' or 'x-small' or 'small' or 'medium' or 'large' or
+ # 'x-large' or 'xx-large'
fontsize = 'medium'
- # a value of type 'float'
+ # a float
handlelen = 0.050000000000000003
- # a value of type 'float'
+ # a float
handletextsep = 0.02
- # a value of type 'bool'
+ # a boolean
isaxes = True
- # a value of type 'float'
+ # a float
labelsep = 0.01
# 'best' or 'upper right' or 'upper left' or 'lower left' or 'lower right'
# or 'right' or 'center left' or 'center right' or 'lower center' or
# 'upper center' or 'center'
loc = 'upper right'
- # a value of type 'float'
+ # a float
markerscale = 1.0
- # a value of type 'int'
+ # an integer
numpoints = 3
- # a value of type 'float'
+ # a float
pad = 0.20000000000000001
- # a value of type 'bool'
+ # a boolean
shadow = False
[lines]
- # a value of type 'bool'
+ # a boolean
antialiased = True
# any valid matplotlib color, eg an abbreviation like 'r' for red, a full
# name like 'orange', a hex color like '#efefef', a grayscale intensity
@@ -271,16 +274,16 @@
dash_joinstyle = 'miter'
# '-' or '--' or '-.' or ':' or 'steps' or '' or ' ' or None
linestyle = '-'
- # a value of type 'float'
+ # a float
linewidth = 1.0
# 'None' or 'o' or '.' or ',' or '^' or 'v' or '<' or '>' or 's' or '+' or
# 'x' or 'D' or 'd' or '1' or '2' or '3' or '4' or 'h' or 'H' or 'p' or
# '|' or '_'
marker = 'None'
- # a value of type 'float'
+ # a float
markeredgewidth = 0.5
- # a value of type 'float'
- markersize = 6.0
+ # a float
+ markersize = 6
# 'butt' or 'round' or 'projecting'
solid_capstyle = 'butt'
# 'miter' or 'round' or 'bevel'
@@ -293,7 +296,7 @@
# A fontconfig pattern. See the fontconfig user manual for more
# information.
cal = 'cursive'
- # a value of type 'bool'
+ # a boolean
fallback_to_cm = True
# 'cm' or 'stix' or 'stixsans' or 'custom'
fontset = 'cm'
@@ -311,7 +314,7 @@
tt = 'monospace'
[patch]
- # a value of type 'bool'
+ # a boolean
antialiased = True
# any valid matplotlib color, eg an abbreviation like 'r' for red, a full
# name like 'orange', a hex color like '#efefef', a grayscale intensity
@@ -321,12 +324,12 @@
# name like 'orange', a hex color like '#efefef', a grayscale intensity
# like '0.5', or an RGBA tuple (1,0,0,1)
facecolor = 'blue'
- # a value of type 'float'
+ # a float
linewidth = 1.0
[savefig]
- # a value of type 'float'
- dpi = 100.0
+ # a float
+ dpi = 100
# any valid matplotlib color, eg an abbreviation like 'r' for red, a full
# name like 'orange', a hex color like '#efefef', a grayscale intensity
# like '0.5', or an RGBA tuple (1,0,0,1)
@@ -343,19 +346,19 @@
# name like 'orange', a hex color like '#efefef', a grayscale intensity
# like '0.5', or an RGBA tuple (1,0,0,1)
color = 'black'
- # a value of type 'bool'
+ # a boolean
usetex = False
[[latex]]
- # a value of type 'bool'
+ # a boolean
dvipnghack = False
- # a list of items each of which is a value of type 'str'
+ # a list of items which are a value of type 'str'
preamble = []
- # a value of type 'bool'
+ # a boolean
unicode = False
[verbose]
- # a value of type 'str' or a value of type 'unicode' or 'sys.stdout'
+ # a file name or 'sys.stdout'
fileo = 'sys.stdout'
# 'silent' or 'helpful' or 'debug' or 'debug-annoying'
level = 'silent'
@@ -367,21 +370,21 @@
color = 'black'
# 'in' or 'out'
direction = 'in'
- # a value of type 'float' or 'xx-small' or 'x-small' or 'small' or
- # 'medium' or 'large' or 'x-large' or 'xx-large'
+ # a float or 'xx-small' or 'x-small' or 'small' or 'medium' or 'large' or
+ # 'x-large' or 'xx-large'
labelsize = 'small'
[[major]]
- # a value of type 'float'
- pad = 4.0
- # a value of type 'float'
- size = 4.0
+ # a float
+ pad = 4
+ # a float
+ size = 4
[[minor]]
- # a value of type 'float'
- pad = 4.0
- # a value of type 'float'
- size = 2.0
+ # a float
+ pad = 4
+ # a float
+ size = 2
[yticks]
# any valid matplotlib color, eg an abbreviation like 'r' for red, a full
@@ -390,18 +393,18 @@
color = 'black'
# 'in' or 'out'
direction = 'in'
- # a value of type 'float' or 'xx-small' or 'x-small' or 'small' or
- # 'medium' or 'large' or 'x-large' or 'xx-large'
+ # a float or 'xx-small' or 'x-small' or 'small' or 'medium' or 'large' or
+ # 'x-large' or 'xx-large'
labelsize = 'small'
[[major]]
- # a value of type 'float'
- pad = 4.0
- # a value of type 'float'
- size = 4.0
+ # a float
+ pad = 4
+ # a float
+ size = 4
[[minor]]
- # a value of type 'float'
- pad = 4.0
- # a value of type 'float'
- size = 2.0
+ # a float
+ pad = 4
+ # a float
+ size = 2
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-09 18:52:44
|
Revision: 4830
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4830&view=rev
Author: mdboom
Date: 2008-01-09 10:52:16 -0800 (Wed, 09 Jan 2008)
Log Message:
-----------
Fix legend handles.
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/legend.py
Modified: trunk/matplotlib/lib/matplotlib/legend.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/legend.py 2008-01-09 18:37:50 UTC (rev 4829)
+++ trunk/matplotlib/lib/matplotlib/legend.py 2008-01-09 18:52:16 UTC (rev 4830)
@@ -248,7 +248,7 @@
legline.update_from(handle)
self._set_artist_props(legline) # after update
legline.set_clip_box(None)
- legline.set_clip_path(self.legendPatch)
+ legline.set_clip_path(None)
legline.set_markersize(self.markerscale*legline.get_markersize())
ret.append(legline)
@@ -260,14 +260,14 @@
p.update_from(handle)
self._set_artist_props(p)
p.set_clip_box(None)
- p.set_clip_path(self.legendPatch)
+ p.set_clip_path(None)
ret.append(p)
elif isinstance(handle, LineCollection):
ydata = (y-HEIGHT/2)*npy.ones(self._xdata.shape, float)
legline = Line2D(self._xdata, ydata)
self._set_artist_props(legline)
legline.set_clip_box(None)
- legline.set_clip_path(self.legendPatch)
+ legline.set_clip_path(None)
lw = handle.get_linewidth()[0]
dashes = handle.get_dashes()
color = handle.get_colors()[0]
@@ -285,7 +285,7 @@
p.set_edgecolor(handle._edgecolors[0])
self._set_artist_props(p)
p.set_clip_box(None)
- p.set_clip_path(self.legendPatch)
+ p.set_clip_path(None)
ret.append(p)
else:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-09 18:37:59
|
Revision: 4829
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4829&view=rev
Author: mdboom
Date: 2008-01-09 10:37:50 -0800 (Wed, 09 Jan 2008)
Log Message:
-----------
Fix shadows of legends.
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/patches.py
Modified: trunk/matplotlib/lib/matplotlib/patches.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/patches.py 2008-01-09 17:59:17 UTC (rev 4828)
+++ trunk/matplotlib/lib/matplotlib/patches.py 2008-01-09 18:37:50 UTC (rev 4829)
@@ -107,13 +107,8 @@
return self.get_path().get_extents(self.get_transform())
def get_transform(self):
- return self._combined_transform
+ return self.get_patch_transform() + artist.Artist.get_transform(self)
- def set_transform(self, t):
- artist.Artist.set_transform(self, t)
- self._combined_transform = self.get_patch_transform() + \
- artist.Artist.get_transform(self)
-
def get_data_transform(self):
return artist.Artist.get_transform(self)
@@ -387,13 +382,9 @@
height = self.convert_yunits(self._height)
bbox = transforms.Bbox.from_bounds(x, y, width, height)
self._rect_transform = transforms.BboxTransformTo(bbox)
- self._combined_transform = self._rect_transform + artist.Artist.get_transform(self)
- def draw(self, renderer):
- self._update_patch_transform()
- Patch.draw(self, renderer)
-
def get_patch_transform(self):
+ self._update_patch_transform()
return self._rect_transform
def contains(self, mouseevent):
@@ -513,27 +504,25 @@
return self._orientation
def _set_orientation(self, xy):
self._orientation = xy
- self._update_transform()
orientation = property(_get_orientation, _set_orientation)
def _get_radius(self):
return self._radius
def _set_radius(self, xy):
self._radius = xy
- self._update_transform()
radius = property(_get_radius, _set_radius)
def _get_numvertices(self):
return self._numVertices
def _set_numvertices(self, numVertices):
self._numVertices = numVertices
- self._path = Path.unit_regular_polygon(numVertices)
numvertices = property(_get_numvertices, _set_numvertices)
def get_path(self):
return self._path
def get_patch_transform(self):
+ self._update_transform()
return self._poly_transform
class PathPatch(Patch):
@@ -606,22 +595,16 @@
self._patch_transform = transforms.IdentityTransform()
self._path = Path.wedge(self.theta1, self.theta2)
- def draw(self, renderer):
+ def get_path(self):
+ return self._path
+
+ def get_patch_transform(self):
x = self.convert_xunits(self.center[0])
y = self.convert_yunits(self.center[1])
rx = self.convert_xunits(self.r)
ry = self.convert_yunits(self.r)
self._patch_transform = transforms.Affine2D() \
.scale(rx, ry).translate(x, y)
- self._combined_transform = self._patch_transform + \
- artist.Artist.get_transform(self)
- Patch.draw(self, renderer)
- __init__.__doc__ = cbook.dedent(__init__.__doc__) % artist.kwdocd
-
- def get_path(self):
- return self._path
-
- def get_patch_transform(self):
return self._patch_transform
# COVERAGE NOTE: Not used internally or from examples
@@ -874,13 +857,7 @@
.scale(width * 0.5, height * 0.5) \
.rotate_deg(self.angle) \
.translate(*center)
- self._combined_transform = self._patch_transform + \
- artist.Artist.get_transform(self)
- def draw(self, renderer):
- self._recompute_transform()
- Patch.draw(self, renderer)
-
def get_path(self):
"""
Return the vertices of the rectangle
@@ -888,6 +865,7 @@
return self._path
def get_patch_transform(self):
+ self._recompute_transform()
return self._patch_transform
def contains(self,ev):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-09 17:59:22
|
Revision: 4828
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4828&view=rev
Author: mdboom
Date: 2008-01-09 09:59:17 -0800 (Wed, 09 Jan 2008)
Log Message:
-----------
Fix pie charts (wedges).
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/path.py
Modified: trunk/matplotlib/lib/matplotlib/path.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/path.py 2008-01-09 01:27:29 UTC (rev 4827)
+++ trunk/matplotlib/lib/matplotlib/path.py 2008-01-09 17:59:17 UTC (rev 4828)
@@ -491,7 +491,7 @@
Returns a wedge of the unit circle from angle theta1 to angle
theta2 (in degrees).
"""
- return cls.arc(theta1, theta2, True, n)
+ return cls.arc(theta1, theta2, n, True)
wedge = classmethod(wedge)
_get_path_collection_extents = get_path_collection_extents
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ef...@us...> - 2008-01-09 01:27:37
|
Revision: 4827
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4827&view=rev
Author: efiring
Date: 2008-01-08 17:27:29 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Update PcolorImage with transforms API changes
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/image.py
Modified: trunk/matplotlib/lib/matplotlib/image.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/image.py 2008-01-08 22:13:08 UTC (rev 4826)
+++ trunk/matplotlib/lib/matplotlib/image.py 2008-01-09 01:27:29 UTC (rev 4827)
@@ -438,10 +438,8 @@
fc = self.axes.get_frame().get_facecolor()
bg = mcolors.colorConverter.to_rgba(fc, 0)
bg = (npy.array(bg)*255).astype(npy.uint8)
- x0, y0, v_width, v_height = self.axes.viewLim.get_bounds()
- l, b, width, height = self.axes.bbox.get_bounds()
- width *= magnification
- height *= magnification
+ width = self.axes.bbox.width * magnification
+ height = self.axes.bbox.height * magnification
if self.check_update('array'):
A = self.to_rgba(self._A, alpha=self._alpha, bytes=True)
self._rgbacache = A
@@ -449,9 +447,11 @@
self.is_grayscale = self.cmap.is_gray()
else:
A = self._rgbacache
+ vl = self.axes.viewLim
im = _image.pcolor2(self._Ax, self._Ay, A,
- height, width,
- (x0, x0+v_width, y0, y0+v_height),
+ self.axes.bbox.height,
+ self.axes.bbox.width,
+ (vl.x0, vl.x1, vl.y0, vl.y1),
bg)
im.is_grayscale = self.is_grayscale
return im
@@ -459,8 +459,11 @@
def draw(self, renderer, *args, **kwargs):
if not self.get_visible(): return
im = self.make_image(renderer.get_image_magnification())
- l, b, widthDisplay, heightDisplay = self.axes.bbox.get_bounds()
- renderer.draw_image(l, b, im, self.axes.bbox)
+ renderer.draw_image(self.axes.bbox.xmin,
+ self.axes.bbox.ymin,
+ im,
+ self.axes.bbox.frozen(),
+ *self.get_transformed_clip_path_and_affine())
def set_data(self, x, y, A):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-08 22:13:36
|
Revision: 4826
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4826&view=rev
Author: mdboom
Date: 2008-01-08 14:13:08 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Undoing last commit. Testing was successful.
Modified Paths:
--------------
branches/v0_91_maint/CHANGELOG
Modified: branches/v0_91_maint/CHANGELOG
===================================================================
--- branches/v0_91_maint/CHANGELOG 2008-01-08 22:10:52 UTC (rev 4825)
+++ branches/v0_91_maint/CHANGELOG 2008-01-08 22:13:08 UTC (rev 4826)
@@ -1,6 +1,3 @@
-2008-01-08 A dummy changelog entry to check merging of bugfixes
- back to the trunk.
-
===============================================================
2008-01-06 Released 0.91.2 at revision 4802
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-08 22:12:02
|
Revision: 4825
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4825&view=rev
Author: mdboom
Date: 2008-01-08 14:10:52 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
A test commit
Modified Paths:
--------------
branches/v0_91_maint/CHANGELOG
Modified: branches/v0_91_maint/CHANGELOG
===================================================================
--- branches/v0_91_maint/CHANGELOG 2008-01-08 22:05:53 UTC (rev 4824)
+++ branches/v0_91_maint/CHANGELOG 2008-01-08 22:10:52 UTC (rev 4825)
@@ -1,3 +1,6 @@
+2008-01-08 A dummy changelog entry to check merging of bugfixes
+ back to the trunk.
+
===============================================================
2008-01-06 Released 0.91.2 at revision 4802
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-08 22:05:59
|
Revision: 4824
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4824&view=rev
Author: mdboom
Date: 2008-01-08 14:05:53 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Closing transforms branch
Added Paths:
-----------
branches/closed/transforms/
Removed Paths:
-------------
branches/transforms/
Copied: branches/closed/transforms (from rev 4823, branches/transforms)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-08 22:04:40
|
Revision: 4823
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4823&view=rev
Author: mdboom
Date: 2008-01-08 14:04:18 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Adding a folder for closed branches.
Added Paths:
-----------
branches/closed/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-08 22:02:42
|
Revision: 4822
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4822&view=rev
Author: mdboom
Date: 2008-01-08 14:02:33 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Initialized merge tracking via "svnmerge" with revisions "1-4816" from
http://matplotlib.svn.sf.net/svnroot/matplotlib/branches/v0_91_maint
Property Changed:
----------------
trunk/matplotlib/
Property changes on: trunk/matplotlib
___________________________________________________________________
Name: svnmerge-integrated
+ /branches/v0_91_maint:1-4816
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-08 22:01:04
|
Revision: 4821
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4821&view=rev
Author: mdboom
Date: 2008-01-08 14:00:39 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Unlinking transforms branch as a merge source
Property Changed:
----------------
trunk/matplotlib/
Property changes on: trunk/matplotlib
___________________________________________________________________
Name: svnmerge-integrated
- /branches/transforms:1-4816
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-08 21:55:39
|
Revision: 4820
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4820&view=rev
Author: mdboom
Date: 2008-01-08 13:55:36 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Adding projections directory
Added Paths:
-----------
trunk/matplotlib/lib/matplotlib/projections/
trunk/matplotlib/lib/matplotlib/projections/__init__.py
trunk/matplotlib/lib/matplotlib/projections/geo.py
trunk/matplotlib/lib/matplotlib/projections/polar.py
Added: trunk/matplotlib/lib/matplotlib/projections/__init__.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/projections/__init__.py (rev 0)
+++ trunk/matplotlib/lib/matplotlib/projections/__init__.py 2008-01-08 21:55:36 UTC (rev 4820)
@@ -0,0 +1,47 @@
+from geo import AitoffAxes, HammerAxes, LambertAxes
+from polar import PolarAxes
+from matplotlib import axes
+
+class ProjectionRegistry(object):
+ def __init__(self):
+ self._all_projection_types = {}
+
+ def register(self, *projections):
+ for projection in projections:
+ name = projection.name
+ self._all_projection_types[name] = projection
+
+ def get_projection_class(self, name):
+ return self._all_projection_types[name]
+
+ def get_projection_names(self):
+ names = self._all_projection_types.keys()
+ names.sort()
+ return names
+projection_registry = ProjectionRegistry()
+
+projection_registry.register(
+ axes.Axes,
+ PolarAxes,
+ AitoffAxes,
+ HammerAxes,
+ LambertAxes)
+
+
+def register_projection(cls):
+ projection_registry.register(cls)
+
+def get_projection_class(projection):
+ if projection is None:
+ projection = 'rectilinear'
+
+ try:
+ return projection_registry.get_projection_class(projection)
+ except KeyError:
+ raise ValueError("Unknown projection '%s'" % projection)
+
+def projection_factory(projection, figure, rect, **kwargs):
+ return get_projection_class(projection)(figure, rect, **kwargs)
+
+def get_projection_names():
+ return projection_registry.get_projection_names()
Added: trunk/matplotlib/lib/matplotlib/projections/geo.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/projections/geo.py (rev 0)
+++ trunk/matplotlib/lib/matplotlib/projections/geo.py 2008-01-08 21:55:36 UTC (rev 4820)
@@ -0,0 +1,591 @@
+import math
+
+import numpy as npy
+from matplotlib.numerix import npyma as ma
+
+import matplotlib
+rcParams = matplotlib.rcParams
+from matplotlib.artist import kwdocd
+from matplotlib.axes import Axes
+from matplotlib import cbook
+from matplotlib.patches import Circle
+from matplotlib.path import Path
+from matplotlib.ticker import Formatter, Locator, NullLocator, FixedLocator, NullFormatter
+from matplotlib.transforms import Affine2D, Affine2DBase, Bbox, \
+ BboxTransformTo, IdentityTransform, Transform, TransformWrapper
+
+class GeoAxes(Axes):
+ """
+ An abstract base class for geographic projections
+ """
+ class ThetaFormatter(Formatter):
+ """
+ Used to format the theta tick labels. Converts the native
+ unit of radians into degrees and adds a degree symbol.
+ """
+ def __init__(self, round_to=1.0):
+ self._round_to = round_to
+
+ def __call__(self, x, pos=None):
+ degrees = (x / npy.pi) * 180.0
+ degrees = round(degrees / self._round_to) * self._round_to
+ # \u00b0 : degree symbol
+ return u"%d\u00b0" % degrees
+
+ RESOLUTION = 75
+
+ def cla(self):
+ Axes.cla(self)
+
+ self.set_longitude_grid(30)
+ self.set_latitude_grid(15)
+ self.set_longitude_grid_ends(75)
+ self.xaxis.set_minor_locator(NullLocator())
+ self.yaxis.set_minor_locator(NullLocator())
+ self.xaxis.set_ticks_position('none')
+ self.yaxis.set_ticks_position('none')
+
+ self.grid(rcParams['axes.grid'])
+
+ Axes.set_xlim(self, -npy.pi, npy.pi)
+ Axes.set_ylim(self, -npy.pi / 2.0, npy.pi / 2.0)
+
+ def _set_lim_and_transforms(self):
+ # A (possibly non-linear) projection on the (already scaled) data
+ self.transProjection = self._get_core_transform(self.RESOLUTION)
+
+ self.transAffine = self._get_affine_transform()
+
+ self.transAxes = BboxTransformTo(self.bbox)
+
+ # The complete data transformation stack -- from data all the
+ # way to display coordinates
+ self.transData = \
+ self.transProjection + \
+ self.transAffine + \
+ self.transAxes
+
+ # This is the transform for longitude ticks.
+ self._xaxis_pretransform = \
+ Affine2D() \
+ .scale(1.0, self._longitude_cap * 2.0) \
+ .translate(0.0, -self._longitude_cap)
+ self._xaxis_transform = \
+ self._xaxis_pretransform + \
+ self.transData
+ self._xaxis_text1_transform = \
+ Affine2D().scale(1.0, 0.0) + \
+ self.transData + \
+ Affine2D().translate(0.0, 4.0)
+ self._xaxis_text2_transform = \
+ Affine2D().scale(1.0, 0.0) + \
+ self.transData + \
+ Affine2D().translate(0.0, -4.0)
+
+ # This is the transform for latitude ticks.
+ yaxis_stretch = Affine2D().scale(npy.pi * 2.0, 1.0).translate(-npy.pi, 0.0)
+ yaxis_space = Affine2D().scale(1.0, 1.1)
+ self._yaxis_transform = \
+ yaxis_stretch + \
+ self.transData
+ yaxis_text_base = \
+ yaxis_stretch + \
+ self.transProjection + \
+ (yaxis_space + \
+ self.transAffine + \
+ self.transAxes)
+ self._yaxis_text1_transform = \
+ yaxis_text_base + \
+ Affine2D().translate(-8.0, 0.0)
+ self._yaxis_text2_transform = \
+ yaxis_text_base + \
+ Affine2D().translate(8.0, 0.0)
+
+ def _get_affine_transform(self):
+ transform = self._get_core_transform(1)
+ xscale, _ = transform.transform_point((npy.pi, 0))
+ _, yscale = transform.transform_point((0, npy.pi / 2.0))
+ return Affine2D() \
+ .scale(0.5 / xscale, 0.5 / yscale) \
+ .translate(0.5, 0.5)
+
+ def update_layout(self, renderer):
+ t_text, b_text = self.xaxis.get_text_heights(renderer)
+ l_text, r_text = self.yaxis.get_text_widths(renderer)
+ originalPosition = self.get_position(True)
+ title_offset = (b_text - originalPosition.transformed(
+ self.figure.transFigure).height) / 2.0
+ self.titleOffsetTrans.clear().translate(0, title_offset)
+
+ def get_xaxis_transform(self):
+ return self._xaxis_transform
+
+ def get_xaxis_text1_transform(self, pixelPad):
+ return self._xaxis_text1_transform, 'bottom', 'center'
+
+ def get_xaxis_text2_transform(self, pixelPad):
+ return self._xaxis_text2_transform, 'top', 'center'
+
+ def get_yaxis_transform(self):
+ return self._yaxis_transform
+
+ def get_yaxis_text1_transform(self, pixelPad):
+ return self._yaxis_text1_transform, 'center', 'right'
+
+ def get_yaxis_text2_transform(self, pixelPad):
+ return self._yaxis_text2_transform, 'center', 'left'
+
+ def get_axes_patch(self):
+ return Circle((0.5, 0.5), 0.5)
+
+ def set_yscale(self, *args, **kwargs):
+ if args[0] != 'linear':
+ raise NotImplementedError
+
+ set_xscale = set_yscale
+
+ def set_xlim(self, *args, **kwargs):
+ Axes.set_xlim(self, -npy.pi, npy.pi)
+ Axes.set_ylim(self, -npy.pi / 2.0, npy.pi / 2.0)
+
+ set_ylim = set_xlim
+
+ def format_coord(self, long, lat):
+ 'return a format string formatting the coordinate'
+ long = long * (180.0 / npy.pi)
+ lat = lat * (180.0 / npy.pi)
+ if lat >= 0.0:
+ ns = 'N'
+ else:
+ ns = 'S'
+ if long >= 0.0:
+ ew = 'E'
+ else:
+ ew = 'W'
+ return u'%f\u00b0%s, %f\u00b0%s' % (abs(lat), ns, abs(long), ew)
+
+ def set_longitude_grid(self, degrees):
+ """
+ Set the number of degrees between each longitude grid.
+ """
+ number = (360.0 / degrees) + 1
+ self.xaxis.set_major_locator(
+ FixedLocator(
+ npy.linspace(-npy.pi, npy.pi, number, True)[1:-1]))
+ self._logitude_degrees = degrees
+ self.xaxis.set_major_formatter(self.ThetaFormatter(degrees))
+
+ def set_latitude_grid(self, degrees):
+ """
+ Set the number of degrees between each longitude grid.
+ """
+ number = (180.0 / degrees) + 1
+ self.yaxis.set_major_locator(
+ FixedLocator(
+ npy.linspace(-npy.pi / 2.0, npy.pi / 2.0, number, True)[1:-1]))
+ self._latitude_degrees = degrees
+ self.yaxis.set_major_formatter(self.ThetaFormatter(degrees))
+
+ def set_longitude_grid_ends(self, degrees):
+ """
+ Set the latitude(s) at which to stop drawing the longitude grids.
+ """
+ self._longitude_cap = degrees * (npy.pi / 180.0)
+ self._xaxis_pretransform \
+ .clear() \
+ .scale(1.0, self._longitude_cap * 2.0) \
+ .translate(0.0, -self._longitude_cap)
+
+ def get_data_ratio(self):
+ '''
+ Return the aspect ratio of the data itself.
+ '''
+ return 1.0
+
+ ### Interactive panning
+
+ def can_zoom(self):
+ """
+ Return True if this axes support the zoom box
+ """
+ return False
+
+ def start_pan(self, x, y, button):
+ pass
+
+ def end_pan(self):
+ pass
+
+ def drag_pan(self, button, key, x, y):
+ pass
+
+
+class AitoffAxes(GeoAxes):
+ name = 'aitoff'
+
+ class AitoffTransform(Transform):
+ """
+ The base Aitoff transform.
+ """
+ input_dims = 2
+ output_dims = 2
+ is_separable = False
+
+ def __init__(self, resolution):
+ """
+ Create a new Aitoff transform. Resolution is the number of steps
+ to interpolate between each input line segment to approximate its
+ path in curved Aitoff space.
+ """
+ Transform.__init__(self)
+ self._resolution = resolution
+
+ def transform(self, ll):
+ longitude = ll[:, 0:1]
+ latitude = ll[:, 1:2]
+
+ # Pre-compute some values
+ half_long = longitude / 2.0
+ cos_latitude = npy.cos(latitude)
+
+ alpha = npy.arccos(cos_latitude * npy.cos(half_long))
+ # Mask this array, or we'll get divide-by-zero errors
+ alpha = ma.masked_where(alpha == 0.0, alpha)
+ # We want unnormalized sinc. numpy.sinc gives us normalized
+ sinc_alpha = ma.sin(alpha) / alpha
+
+ x = (cos_latitude * npy.sin(half_long)) / sinc_alpha
+ y = (npy.sin(latitude) / sinc_alpha)
+ x.set_fill_value(0.0)
+ y.set_fill_value(0.0)
+ return npy.concatenate((x.filled(), y.filled()), 1)
+ transform.__doc__ = Transform.transform.__doc__
+
+ transform_non_affine = transform
+ transform_non_affine.__doc__ = Transform.transform_non_affine.__doc__
+
+ def transform_path(self, path):
+ vertices = path.vertices
+ ipath = path.interpolated(self._resolution)
+ return Path(self.transform(ipath.vertices), ipath.codes)
+ transform_path.__doc__ = Transform.transform_path.__doc__
+
+ transform_path_non_affine = transform_path
+ transform_path_non_affine.__doc__ = Transform.transform_path_non_affine.__doc__
+
+ def inverted(self):
+ return AitoffAxes.InvertedAitoffTransform(self._resolution)
+ inverted.__doc__ = Transform.inverted.__doc__
+
+ class InvertedAitoffTransform(Transform):
+ input_dims = 2
+ output_dims = 2
+ is_separable = False
+
+ def __init__(self, resolution):
+ Transform.__init__(self)
+ self._resolution = resolution
+
+ def transform(self, xy):
+ # MGDTODO: Math is hard ;(
+ return xy
+ transform.__doc__ = Transform.transform.__doc__
+
+ def inverted(self):
+ return AitoffAxes.AitoffTransform(self._resolution)
+ inverted.__doc__ = Transform.inverted.__doc__
+
+ def __init__(self, *args, **kwargs):
+ self._longitude_cap = npy.pi / 2.0
+ GeoAxes.__init__(self, *args, **kwargs)
+ self.set_aspect(0.5, adjustable='box', anchor='C')
+ self.cla()
+
+ def _get_core_transform(self, resolution):
+ return self.AitoffTransform(resolution)
+
+
+class HammerAxes(GeoAxes):
+ name = 'hammer'
+
+ class HammerTransform(Transform):
+ """
+ The base Hammer transform.
+ """
+ input_dims = 2
+ output_dims = 2
+ is_separable = False
+
+ def __init__(self, resolution):
+ """
+ Create a new Hammer transform. Resolution is the number of steps
+ to interpolate between each input line segment to approximate its
+ path in curved Hammer space.
+ """
+ Transform.__init__(self)
+ self._resolution = resolution
+
+ def transform(self, ll):
+ longitude = ll[:, 0:1]
+ latitude = ll[:, 1:2]
+
+ # Pre-compute some values
+ half_long = longitude / 2.0
+ cos_latitude = npy.cos(latitude)
+ sqrt2 = npy.sqrt(2.0)
+
+ alpha = 1.0 + cos_latitude * npy.cos(half_long)
+ x = (2.0 * sqrt2) * (cos_latitude * npy.sin(half_long)) / alpha
+ y = (sqrt2 * npy.sin(latitude)) / alpha
+ return npy.concatenate((x, y), 1)
+ transform.__doc__ = Transform.transform.__doc__
+
+ transform_non_affine = transform
+ transform_non_affine.__doc__ = Transform.transform_non_affine.__doc__
+
+ def transform_path(self, path):
+ vertices = path.vertices
+ ipath = path.interpolated(self._resolution)
+ return Path(self.transform(ipath.vertices), ipath.codes)
+ transform_path.__doc__ = Transform.transform_path.__doc__
+
+ transform_path_non_affine = transform_path
+ transform_path_non_affine.__doc__ = Transform.transform_path_non_affine.__doc__
+
+ def inverted(self):
+ return HammerAxes.InvertedHammerTransform(self._resolution)
+ inverted.__doc__ = Transform.inverted.__doc__
+
+ class InvertedHammerTransform(Transform):
+ input_dims = 2
+ output_dims = 2
+ is_separable = False
+
+ def __init__(self, resolution):
+ Transform.__init__(self)
+ self._resolution = resolution
+
+ def transform(self, xy):
+ x = xy[:, 0:1]
+ y = xy[:, 1:2]
+
+ quarter_x = 0.25 * x
+ half_y = 0.5 * y
+ z = npy.sqrt(1.0 - quarter_x*quarter_x - half_y*half_y)
+ longitude = 2 * npy.arctan((z*x) / (2.0 * (2.0*z*z - 1.0)))
+ latitude = npy.arcsin(y*z)
+ return npy.concatenate((longitude, latitude), 1)
+ transform.__doc__ = Transform.transform.__doc__
+
+ def inverted(self):
+ return HammerAxes.HammerTransform(self._resolution)
+ inverted.__doc__ = Transform.inverted.__doc__
+
+ def __init__(self, *args, **kwargs):
+ self._longitude_cap = npy.pi / 2.0
+ GeoAxes.__init__(self, *args, **kwargs)
+ self.set_aspect(0.5, adjustable='box', anchor='C')
+ self.cla()
+
+ def _get_core_transform(self, resolution):
+ return self.HammerTransform(resolution)
+
+
+class MollweideAxes(GeoAxes):
+ name = 'mollweide'
+
+ class MollweideTransform(Transform):
+ """
+ The base Mollweide transform.
+ """
+ input_dims = 2
+ output_dims = 2
+ is_separable = False
+
+ def __init__(self, resolution):
+ """
+ Create a new Mollweide transform. Resolution is the number of steps
+ to interpolate between each input line segment to approximate its
+ path in curved Mollweide space.
+ """
+ Transform.__init__(self)
+ self._resolution = resolution
+
+ def transform(self, ll):
+ longitude = ll[:, 0:1]
+ latitude = ll[:, 1:2]
+
+ aux = 2.0 * npy.arcsin((2.0 * latitude) / npy.pi)
+ x = (2.0 * npy.sqrt(2.0) * longitude * npy.cos(aux)) / npy.pi
+ y = (npy.sqrt(2.0) * npy.sin(aux))
+
+ return npy.concatenate((x, y), 1)
+ transform.__doc__ = Transform.transform.__doc__
+
+ transform_non_affine = transform
+ transform_non_affine.__doc__ = Transform.transform_non_affine.__doc__
+
+ def transform_path(self, path):
+ vertices = path.vertices
+ ipath = path.interpolated(self._resolution)
+ return Path(self.transform(ipath.vertices), ipath.codes)
+ transform_path.__doc__ = Transform.transform_path.__doc__
+
+ transform_path_non_affine = transform_path
+ transform_path_non_affine.__doc__ = Transform.transform_path_non_affine.__doc__
+
+ def inverted(self):
+ return MollweideAxes.InvertedMollweideTransform(self._resolution)
+ inverted.__doc__ = Transform.inverted.__doc__
+
+ class InvertedMollweideTransform(Transform):
+ input_dims = 2
+ output_dims = 2
+ is_separable = False
+
+ def __init__(self, resolution):
+ Transform.__init__(self)
+ self._resolution = resolution
+
+ def transform(self, xy):
+ # MGDTODO: Math is hard ;(
+ return xy
+ transform.__doc__ = Transform.transform.__doc__
+
+ def inverted(self):
+ return MollweideAxes.MollweideTransform(self._resolution)
+ inverted.__doc__ = Transform.inverted.__doc__
+
+ def __init__(self, *args, **kwargs):
+ self._longitude_cap = npy.pi / 2.0
+ GeoAxes.__init__(self, *args, **kwargs)
+ self.set_aspect(0.5, adjustable='box', anchor='C')
+ self.cla()
+
+ def _get_core_transform(self, resolution):
+ return self.MollweideTransform(resolution)
+
+
+class LambertAxes(GeoAxes):
+ name = 'lambert'
+
+ class LambertTransform(Transform):
+ """
+ The base Lambert transform.
+ """
+ input_dims = 2
+ output_dims = 2
+ is_separable = False
+
+ def __init__(self, center_longitude, center_latitude, resolution):
+ """
+ Create a new Lambert transform. Resolution is the number of steps
+ to interpolate between each input line segment to approximate its
+ path in curved Lambert space.
+ """
+ Transform.__init__(self)
+ self._resolution = resolution
+ self._center_longitude = center_longitude
+ self._center_latitude = center_latitude
+
+ def transform(self, ll):
+ longitude = ll[:, 0:1]
+ latitude = ll[:, 1:2]
+ clong = self._center_longitude
+ clat = self._center_latitude
+ cos_lat = npy.cos(latitude)
+ sin_lat = npy.sin(latitude)
+ diff_long = longitude - clong
+ cos_diff_long = npy.cos(diff_long)
+
+ inner_k = (1.0 +
+ npy.sin(clat)*sin_lat +
+ npy.cos(clat)*cos_lat*cos_diff_long)
+ # Prevent divide-by-zero problems
+ inner_k = npy.where(inner_k == 0.0, 1e-15, inner_k)
+ k = npy.sqrt(2.0 / inner_k)
+ x = k*cos_lat*npy.sin(diff_long)
+ y = k*(npy.cos(clat)*sin_lat -
+ npy.sin(clat)*cos_lat*cos_diff_long)
+
+ return npy.concatenate((x, y), 1)
+ transform.__doc__ = Transform.transform.__doc__
+
+ transform_non_affine = transform
+ transform_non_affine.__doc__ = Transform.transform_non_affine.__doc__
+
+ def transform_path(self, path):
+ vertices = path.vertices
+ ipath = path.interpolated(self._resolution)
+ return Path(self.transform(ipath.vertices), ipath.codes)
+ transform_path.__doc__ = Transform.transform_path.__doc__
+
+ transform_path_non_affine = transform_path
+ transform_path_non_affine.__doc__ = Transform.transform_path_non_affine.__doc__
+
+ def inverted(self):
+ return LambertAxes.InvertedLambertTransform(
+ self._center_longitude,
+ self._center_latitude,
+ self._resolution)
+ inverted.__doc__ = Transform.inverted.__doc__
+
+ class InvertedLambertTransform(Transform):
+ input_dims = 2
+ output_dims = 2
+ is_separable = False
+
+ def __init__(self, center_longitude, center_latitude, resolution):
+ Transform.__init__(self)
+ self._resolution = resolution
+ self._center_longitude = center_longitude
+ self._center_latitude = center_latitude
+
+ def transform(self, xy):
+ x = xy[:, 0:1]
+ y = xy[:, 1:2]
+ clong = self._center_longitude
+ clat = self._center_latitude
+ p = npy.sqrt(x*x + y*y)
+ p = npy.where(p == 0.0, 1e-9, p)
+ c = 2.0 * npy.arcsin(0.5 * p)
+ sin_c = npy.sin(c)
+ cos_c = npy.cos(c)
+
+ lat = npy.arcsin(cos_c*npy.sin(clat) +
+ ((y*sin_c*npy.cos(clat)) / p))
+ long = clong + npy.arctan(
+ (x*sin_c) / (p*npy.cos(clat)*cos_c - y*npy.sin(clat)*sin_c))
+
+ return npy.concatenate((long, lat), 1)
+ transform.__doc__ = Transform.transform.__doc__
+
+ def inverted(self):
+ return LambertAxes.LambertTransform(
+ self._center_longitude,
+ self._center_latitude,
+ self._resolution)
+ inverted.__doc__ = Transform.inverted.__doc__
+
+ def __init__(self, *args, **kwargs):
+ self._longitude_cap = npy.pi / 2.0
+ self._center_longitude = kwargs.pop("center_longitude", 0.0)
+ self._center_latitude = kwargs.pop("center_latitude", 0.0)
+ GeoAxes.__init__(self, *args, **kwargs)
+ self.set_aspect('equal', adjustable='box', anchor='C')
+ self.cla()
+
+ def cla(self):
+ GeoAxes.cla(self)
+ self.yaxis.set_major_formatter(NullFormatter())
+
+ def _get_core_transform(self, resolution):
+ return self.LambertTransform(
+ self._center_longitude,
+ self._center_latitude,
+ resolution)
+
+ def _get_affine_transform(self):
+ return Affine2D() \
+ .scale(0.25) \
+ .translate(0.5, 0.5)
Added: trunk/matplotlib/lib/matplotlib/projections/polar.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/projections/polar.py (rev 0)
+++ trunk/matplotlib/lib/matplotlib/projections/polar.py 2008-01-08 21:55:36 UTC (rev 4820)
@@ -0,0 +1,569 @@
+import math
+
+import numpy as npy
+
+import matplotlib
+rcParams = matplotlib.rcParams
+from matplotlib.artist import kwdocd
+from matplotlib.axes import Axes
+from matplotlib import cbook
+from matplotlib.patches import Circle
+from matplotlib.path import Path
+from matplotlib.ticker import Formatter, Locator
+from matplotlib.transforms import Affine2D, Affine2DBase, Bbox, \
+ BboxTransformTo, IdentityTransform, Transform, TransformWrapper
+
+class PolarAxes(Axes):
+ """
+ A polar graph projection, where the input dimensions are theta, r.
+
+ Theta starts pointing east and goes anti-clockwise.
+ """
+ name = 'polar'
+
+ class PolarTransform(Transform):
+ """
+ The base polar transform. This handles projection theta and r into
+ Cartesian coordinate space, but does not perform the ultimate affine
+ transformation into the correct position.
+ """
+ input_dims = 2
+ output_dims = 2
+ is_separable = False
+
+ def __init__(self, resolution):
+ """
+ Create a new polar transform. Resolution is the number of steps
+ to interpolate between each input line segment to approximate its
+ path in curved polar space.
+ """
+ Transform.__init__(self)
+ self._resolution = resolution
+
+ def transform(self, tr):
+ xy = npy.zeros(tr.shape, npy.float_)
+ t = tr[:, 0:1]
+ r = tr[:, 1:2]
+ x = xy[:, 0:1]
+ y = xy[:, 1:2]
+ x[:] = r * npy.cos(t)
+ y[:] = r * npy.sin(t)
+ return xy
+ transform.__doc__ = Transform.transform.__doc__
+
+ transform_non_affine = transform
+ transform_non_affine.__doc__ = Transform.transform_non_affine.__doc__
+
+ def transform_path(self, path):
+ vertices = path.vertices
+ if len(vertices) == 2 and vertices[0, 0] == vertices[1, 0]:
+ return Path(self.transform(vertices), path.codes)
+ ipath = path.interpolated(self._resolution)
+ return Path(self.transform(ipath.vertices), ipath.codes)
+ transform_path.__doc__ = Transform.transform_path.__doc__
+
+ transform_path_non_affine = transform_path
+ transform_path_non_affine.__doc__ = Transform.transform_path_non_affine.__doc__
+
+ def inverted(self):
+ return PolarAxes.InvertedPolarTransform(self._resolution)
+ inverted.__doc__ = Transform.inverted.__doc__
+
+ class PolarAffine(Affine2DBase):
+ """
+ The affine part of the polar projection. Scales the output so
+ that maximum radius rests on the edge of the axes circle.
+ """
+ def __init__(self, scale_transform, limits):
+ """
+ limits is the view limit of the data. The only part of
+ its bounds that is used is ymax (for the radius maximum).
+ """
+ Affine2DBase.__init__(self)
+ self._scale_transform = scale_transform
+ self._limits = limits
+ self.set_children(scale_transform, limits)
+ self._mtx = None
+
+ def get_matrix(self):
+ if self._invalid:
+ limits_scaled = self._limits.transformed(self._scale_transform)
+ ymax = limits_scaled.ymax
+ affine = Affine2D() \
+ .scale(0.5 / ymax) \
+ .translate(0.5, 0.5)
+ self._mtx = affine.get_matrix()
+ self._inverted = None
+ self._invalid = 0
+ return self._mtx
+ get_matrix.__doc__ = Affine2DBase.get_matrix.__doc__
+
+ class InvertedPolarTransform(Transform):
+ """
+ The inverse of the polar transform, mapping Cartesian
+ coordinate space back to t and r.
+ """
+ input_dims = 2
+ output_dims = 2
+ is_separable = False
+
+ def __init__(self, resolution):
+ Transform.__init__(self)
+ self._resolution = resolution
+
+ def transform(self, xy):
+ x = xy[:, 0:1]
+ y = xy[:, 1:]
+ r = npy.sqrt(x*x + y*y)
+ theta = npy.arccos(x / r)
+ theta = npy.where(y < 0, 2 * npy.pi - theta, theta)
+ return npy.concatenate((theta, r), 1)
+ transform.__doc__ = Transform.transform.__doc__
+
+ def inverted(self):
+ return PolarAxes.PolarTransform(self._resolution)
+ inverted.__doc__ = Transform.inverted.__doc__
+
+ class ThetaFormatter(Formatter):
+ """
+ Used to format the theta tick labels. Converts the native
+ unit of radians into degrees and adds a degree symbol.
+ """
+ def __call__(self, x, pos=None):
+ # \u00b0 : degree symbol
+ return u"%d\u00b0" % ((x / npy.pi) * 180.0)
+
+ class RadialLocator(Locator):
+ """
+ Used to locate radius ticks.
+
+ Ensures that all ticks are strictly positive. For all other
+ tasks, it delegates to the base Locator (which may be
+ different depending on the scale of the r-axis.
+ """
+ def __init__(self, base):
+ self.base = base
+
+ def __call__(self):
+ ticks = self.base()
+ return [x for x in ticks if x > 0]
+
+ def autoscale(self):
+ return self.base.autoscale()
+
+ def pan(self, numsteps):
+ return self.base.pan(numsteps)
+
+ def zoom(self, direction):
+ return self.base.zoom(direction)
+
+ def refresh(self):
+ return self.base.refresh()
+
+ RESOLUTION = 75
+
+ def __init__(self, *args, **kwargs):
+ """
+ Create a new Polar Axes for a polar plot.
+ """
+
+ self._rpad = 0.05
+ Axes.__init__(self, *args, **kwargs)
+ self.set_aspect('equal', adjustable='box', anchor='C')
+ self.cla()
+ __init__.__doc__ = Axes.__init__.__doc__
+
+ def cla(self):
+ Axes.cla(self)
+
+ self.xaxis.set_major_formatter(self.ThetaFormatter())
+ angles = npy.arange(0.0, 360.0, 45.0)
+ self.set_thetagrids(angles)
+ self.yaxis.set_major_locator(self.RadialLocator(self.yaxis.get_major_locator()))
+
+ self.grid(rcParams['polaraxes.grid'])
+ self.xaxis.set_ticks_position('none')
+ self.yaxis.set_ticks_position('none')
+
+ def _set_lim_and_transforms(self):
+ self.transAxes = BboxTransformTo(self.bbox)
+
+ # Transforms the x and y axis separately by a scale factor
+ # It is assumed that this part will have non-linear components
+ self.transScale = TransformWrapper(IdentityTransform())
+
+ # A (possibly non-linear) projection on the (already scaled) data
+ self.transProjection = self.PolarTransform(self.RESOLUTION)
+
+ # An affine transformation on the data, generally to limit the
+ # range of the axes
+ self.transProjectionAffine = self.PolarAffine(self.transScale, self.viewLim)
+
+ # The complete data transformation stack -- from data all the
+ # way to display coordinates
+ self.transData = self.transScale + self.transProjection + \
+ (self.transProjectionAffine + self.transAxes)
+
+ # This is the transform for theta-axis ticks. It is
+ # equivalent to transData, except it always puts r == 1.0 at
+ # the edge of the axis circle.
+ self._xaxis_transform = (
+ self.transProjection +
+ self.PolarAffine(IdentityTransform(), Bbox.unit()) +
+ self.transAxes)
+ # The theta labels are moved from radius == 0.0 to radius == 1.1
+ self._theta_label1_position = Affine2D().translate(0.0, 1.1)
+ self._xaxis_text1_transform = (
+ self._theta_label1_position +
+ self._xaxis_transform)
+ self._theta_label2_position = Affine2D().translate(0.0, 1.0 / 1.1)
+ self._xaxis_text2_transform = (
+ self._theta_label2_position +
+ self._xaxis_transform)
+
+ # This is the transform for r-axis ticks. It scales the theta
+ # axis so the gridlines from 0.0 to 1.0, now go from 0.0 to
+ # 2pi.
+ self._yaxis_transform = (
+ Affine2D().scale(npy.pi * 2.0, 1.0) +
+ self.transData)
+ # The r-axis labels are put at an angle and padded in the r-direction
+ self._r_label1_position = Affine2D().translate(22.5, self._rpad)
+ self._yaxis_text1_transform = (
+ self._r_label1_position +
+ Affine2D().scale(1.0 / 360.0, 1.0) +
+ self._yaxis_transform
+ )
+ self._r_label2_position = Affine2D().translate(22.5, self._rpad)
+ self._yaxis_text2_transform = (
+ self._r_label2_position +
+ Affine2D().scale(1.0 / 360.0, 1.0) +
+ self._yaxis_transform
+ )
+
+ def update_layout(self, renderer):
+ t_text, b_text = self.xaxis.get_text_heights(renderer)
+ l_text, r_text = self.yaxis.get_text_widths(renderer)
+ originalPosition = self.get_position(True)
+ title_offset = (b_text - originalPosition.transformed(
+ self.figure.transFigure).height) / 2.0
+ self.titleOffsetTrans.clear().translate(0, title_offset)
+
+ def get_xaxis_transform(self):
+ return self._xaxis_transform
+
+ def get_xaxis_text1_transform(self, pixelPad):
+ return self._xaxis_text1_transform, 'center', 'center'
+
+ def get_xaxis_text2_transform(self, pixelPad):
+ return self._xaxis_text2_transform, 'center', 'center'
+
+ def get_yaxis_transform(self):
+ return self._yaxis_transform
+
+ def get_yaxis_text1_transform(self, pixelPad):
+ return self._yaxis_text1_transform, 'center', 'center'
+
+ def get_yaxis_text2_transform(self, pixelPad):
+ return self._yaxis_text2_transform, 'center', 'center'
+
+ def get_axes_patch(self):
+ return Circle((0.5, 0.5), 0.5)
+
+ def set_rmax(self, rmax):
+ self.viewLim.y1 = rmax
+ angle = self._r_label1_position.to_values()[4]
+ self._r_label1_position.clear().translate(
+ angle, rmax * self._rpad)
+ self._r_label2_position.clear().translate(
+ angle, -rmax * self._rpad)
+
+ def get_rmax(self):
+ return self.viewLim.ymax
+
+ def set_yscale(self, *args, **kwargs):
+ Axes.set_yscale(self, *args, **kwargs)
+ self.yaxis.set_major_locator(
+ self.RadialLocator(self.yaxis.get_major_locator()))
+
+ set_rscale = Axes.set_yscale
+ set_rticks = Axes.set_yticks
+
+ def set_thetagrids(self, angles, labels=None, frac=None,
+ **kwargs):
+ """
+ Set the angles at which to place the theta grids (these
+ gridlines are equal along the theta dimension). angles is in
+ degrees
+
+ labels, if not None, is a len(angles) list of strings of the
+ labels to use at each angle.
+
+ if labels is None, the labels with be fmt%%angle
+
+ frac is the fraction of the polar axes radius at which to
+ place the label (1 is the edge).Eg 1.05 isd outside the axes
+ and 0.95 is inside the axes
+
+ Return value is a list of lines, labels where the lines are
+ lines.Line2D instances and the labels are Text
+ instances:
+
+ kwargs are optional text properties for the labels
+ %(Text)s
+ ACCEPTS: sequence of floats
+ """
+ angles = npy.asarray(angles, npy.float_)
+ self.set_xticks(angles * (npy.pi / 180.0))
+ if labels is not None:
+ self.set_xticklabels(labels)
+ if frac is not None:
+ self._theta_label1_position.clear().translate(0.0, frac)
+ self._theta_label2_position.clear().translate(0.0, 1.0 / frac)
+ for t in self.xaxis.get_ticklabels():
+ t.update(kwargs)
+ set_thetagrids.__doc__ = cbook.dedent(set_thetagrids.__doc__) % kwdocd
+
+ def set_rgrids(self, radii, labels=None, angle=None, rpad=None, **kwargs):
+ """
+ set the radial locations and labels of the r grids
+
+ The labels will appear at radial distances radii at angle
+
+ labels, if not None, is a len(radii) list of strings of the
+ labels to use at each angle.
+
+ if labels is None, the self.rformatter will be used
+
+ rpad is a fraction of the max of radii which will pad each of
+ the radial labels in the radial direction.
+
+ Return value is a list of lines, labels where the lines are
+ lines.Line2D instances and the labels are text.Text
+ instances
+
+ kwargs control the rgrid Text label properties:
+ %(Text)s
+
+ ACCEPTS: sequence of floats
+ """
+ radii = npy.asarray(radii)
+ rmin = radii.min()
+ if rmin <= 0:
+ raise ValueError('radial grids must be strictly positive')
+
+ self.set_yticks(radii)
+ if labels is not None:
+ self.set_yticklabels(labels)
+ if angle is None:
+ angle = self._r_label1_position.to_values()[4]
+ if rpad is not None:
+ self._rpad = rpad
+ rmax = self.get_rmax()
+ self._r_label1_position.clear().translate(angle, self._rpad * rmax)
+ self._r_label2_position.clear().translate(angle, -self._rpad * rmax)
+ for t in self.yaxis.get_ticklabels():
+ t.update(kwargs)
+
+ set_rgrids.__doc__ = cbook.dedent(set_rgrids.__doc__) % kwdocd
+
+ def set_xscale(self, scale, *args, **kwargs):
+ if scale != 'linear':
+ raise NotImplementedError("You can not set the xscale on a polar plot.")
+
+ def set_xlim(self, *args, **kargs):
+ # The xlim is fixed, no matter what you do
+ self.viewLim.intervalx = (0.0, npy.pi * 2.0)
+
+ def format_coord(self, theta, r):
+ 'return a format string formatting the coordinate'
+ theta /= math.pi
+ # \u03b8: lower-case theta
+ # \u03c0: lower-case pi
+ # \u00b0: degree symbol
+ return u'\u03b8=%0.3f\u03c0 (%0.3f\u00b0), r=%0.3f' % (theta, theta * 180.0, r)
+
+ def get_data_ratio(self):
+ '''
+ Return the aspect ratio of the data itself. For a polar plot,
+ this should always be 1.0
+ '''
+ return 1.0
+
+ ### Interactive panning
+
+ def can_zoom(self):
+ """
+ Return True if this axes support the zoom box
+ """
+ return False
+
+ def start_pan(self, x, y, button):
+ angle = self._r_label1_position.to_values()[4] / 180.0 * npy.pi
+ mode = ''
+ if button == 1:
+ epsilon = npy.pi / 45.0
+ t, r = self.transData.inverted().transform_point((x, y))
+ if t >= angle - epsilon and t <= angle + epsilon:
+ mode = 'drag_r_labels'
+ elif button == 3:
+ mode = 'zoom'
+
+ self._pan_start = cbook.Bunch(
+ rmax = self.get_rmax(),
+ trans = self.transData.frozen(),
+ trans_inverse = self.transData.inverted().frozen(),
+ r_label_angle = self._r_label1_position.to_values()[4],
+ x = x,
+ y = y,
+ mode = mode
+ )
+
+ def end_pan(self):
+ del self._pan_start
+
+ def drag_pan(self, button, key, x, y):
+ p = self._pan_start
+
+ if p.mode == 'drag_r_labels':
+ startt, startr = p.trans_inverse.transform_point((p.x, p.y))
+ t, r = p.trans_inverse.transform_point((x, y))
+
+ # Deal with theta
+ dt0 = t - startt
+ dt1 = startt - t
+ if abs(dt1) < abs(dt0):
+ dt = abs(dt1) * sign(dt0) * -1.0
+ else:
+ dt = dt0 * -1.0
+ dt = (dt / npy.pi) * 180.0
+
+ rpad = self._r_label1_position.to_values()[5]
+ self._r_label1_position.clear().translate(
+ p.r_label_angle - dt, rpad)
+ self._r_label2_position.clear().translate(
+ p.r_label_angle - dt, -rpad)
+
+ elif p.mode == 'zoom':
+ startt, startr = p.trans_inverse.transform_point((p.x, p.y))
+ t, r = p.trans_inverse.transform_point((x, y))
+
+ dr = r - startr
+
+ # Deal with r
+ scale = r / startr
+ self.set_rmax(p.rmax / scale)
+
+# These are a couple of aborted attempts to project a polar plot using
+# cubic bezier curves.
+
+# def transform_path(self, path):
+# twopi = 2.0 * npy.pi
+# halfpi = 0.5 * npy.pi
+
+# vertices = path.vertices
+# t0 = vertices[0:-1, 0]
+# t1 = vertices[1: , 0]
+# td = npy.where(t1 > t0, t1 - t0, twopi - (t0 - t1))
+# maxtd = td.max()
+# interpolate = npy.ceil(maxtd / halfpi)
+# if interpolate > 1.0:
+# vertices = self.interpolate(vertices, interpolate)
+
+# vertices = self.transform(vertices)
+
+# result = npy.zeros((len(vertices) * 3 - 2, 2), npy.float_)
+# codes = mpath.Path.CURVE4 * npy.ones((len(vertices) * 3 - 2, ), mpath.Path.code_type)
+# result[0] = vertices[0]
+# codes[0] = mpath.Path.MOVETO
+
+# kappa = 4.0 * ((npy.sqrt(2.0) - 1.0) / 3.0)
+# kappa = 0.5
+
+# p0 = vertices[0:-1]
+# p1 = vertices[1: ]
+
+# x0 = p0[:, 0:1]
+# y0 = p0[:, 1: ]
+# b0 = ((y0 - x0) - y0) / ((x0 + y0) - x0)
+# a0 = y0 - b0*x0
+
+# x1 = p1[:, 0:1]
+# y1 = p1[:, 1: ]
+# b1 = ((y1 - x1) - y1) / ((x1 + y1) - x1)
+# a1 = y1 - b1*x1
+
+# x = -(a0-a1) / (b0-b1)
+# y = a0 + b0*x
+
+# xk = (x - x0) * kappa + x0
+# yk = (y - y0) * kappa + y0
+
+# result[1::3, 0:1] = xk
+# result[1::3, 1: ] = yk
+
+# xk = (x - x1) * kappa + x1
+# yk = (y - y1) * kappa + y1
+
+# result[2::3, 0:1] = xk
+# result[2::3, 1: ] = yk
+
+# result[3::3] = p1
+
+# print vertices[-2:]
+# print result[-2:]
+
+# return mpath.Path(result, codes)
+
+# twopi = 2.0 * npy.pi
+# halfpi = 0.5 * npy.pi
+
+# vertices = path.vertices
+# t0 = vertices[0:-1, 0]
+# t1 = vertices[1: , 0]
+# td = npy.where(t1 > t0, t1 - t0, twopi - (t0 - t1))
+# maxtd = td.max()
+# interpolate = npy.ceil(maxtd / halfpi)
+
+# print "interpolate", interpolate
+# if interpolate > 1.0:
+# vertices = self.interpolate(vertices, interpolate)
+
+# result = npy.zeros((len(vertices) * 3 - 2, 2), npy.float_)
+# codes = mpath.Path.CURVE4 * npy.ones((len(vertices) * 3 - 2, ), mpath.Path.code_type)
+# result[0] = vertices[0]
+# codes[0] = mpath.Path.MOVETO
+
+# kappa = 4.0 * ((npy.sqrt(2.0) - 1.0) / 3.0)
+# tkappa = npy.arctan(kappa)
+# hyp_kappa = npy.sqrt(kappa*kappa + 1.0)
+
+# t0 = vertices[0:-1, 0]
+# t1 = vertices[1: , 0]
+# r0 = vertices[0:-1, 1]
+# r1 = vertices[1: , 1]
+
+# td = npy.where(t1 > t0, t1 - t0, twopi - (t0 - t1))
+# td_scaled = td / (npy.pi * 0.5)
+# rd = r1 - r0
+# r0kappa = r0 * kappa * td_scaled
+# r1kappa = r1 * kappa * td_scaled
+# ravg_kappa = ((r1 + r0) / 2.0) * kappa * td_scaled
+
+# result[1::3, 0] = t0 + (tkappa * td_scaled)
+# result[1::3, 1] = r0*hyp_kappa
+# # result[1::3, 1] = r0 / npy.cos(tkappa * td_scaled) # npy.sqrt(r0*r0 + ravg_kappa*ravg_kappa)
+
+# result[2::3, 0] = t1 - (tkappa * td_scaled)
+# result[2::3, 1] = r1*hyp_kappa
+# # result[2::3, 1] = r1 / npy.cos(tkappa * td_scaled) # npy.sqrt(r1*r1 + ravg_kappa*ravg_kappa)
+
+# result[3::3, 0] = t1
+# result[3::3, 1] = r1
+
+# print vertices[:6], result[:6], t0[:6], t1[:6], td[:6], td_scaled[:6], tkappa
+# result = self.transform(result)
+# return mpath.Path(result, codes)
+# transform_path_non_affine = transform_path
+
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-08 21:54:37
|
Revision: 4819
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4819&view=rev
Author: mdboom
Date: 2008-01-08 13:54:36 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Adding projections directory
Removed Paths:
-------------
branches/transforms/lib/matplotlib/projections/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-08 21:52:18
|
Revision: 4818
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4818&view=rev
Author: mdboom
Date: 2008-01-08 13:52:03 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Adding projections directory
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-08 21:43:34
|
Revision: 4817
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4817&view=rev
Author: mdboom
Date: 2008-01-08 13:42:26 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Merged revisions 3807-3808,3811-3812,3814-3823,3825-3830,3832-3835,3837-3846,3848-3865,3867-3869,3871-3872,3874-3884,3886-3895,3897-3905,3907-3908,3910-3924,3926-3928,3930-3932,3934-3955,3957-3961,3963-3983,3985-4000,4002-4058,4060-4134,4136-4191,4193-4219,4221-4243,4245-4291,4293-4317,4319-4329,4331-4339,4341-4392,4394,4396-4400,4402-4405,4407-4436,4438-4443,4445-4490,4492-4495,4497-4498,4500-4505,4507-4561,4563-4615,4617-4618,4620,4622-4633,4635-4667,4670-4687,4690-4707,4709-4714,4716-4726,4728-4734,4736-4757,4759-4772,4774-4786,4788-4800,4802-4803,4805-4816 via svnmerge from
https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/branches/transforms
................
r3822 | mdboom | 2007-09-10 13:39:37 -0400 (Mon, 10 Sep 2007) | 2 lines
Baby steps and horrible breakage on transforms branch.
................
r3823 | mdboom | 2007-09-10 13:40:47 -0400 (Mon, 10 Sep 2007) | 1 line
Adding new files that will eventually replace transforms.py/cpp
................
r3826 | mdboom | 2007-09-10 15:25:21 -0400 (Mon, 10 Sep 2007) | 3 lines
Running mathtext_demo.py without transforms.py/cpp. Totally broken,
though. Not surprising... ;)
................
r3830 | mdboom | 2007-09-11 13:56:13 -0400 (Tue, 11 Sep 2007) | 2 lines
Just marking a milestone -- about to totally rip things up again.
................
r3835 | mdboom | 2007-09-12 09:36:25 -0400 (Wed, 12 Sep 2007) | 2 lines
Second pass, using a stateful transform tree.
................
r3837 | mdboom | 2007-09-12 10:46:03 -0400 (Wed, 12 Sep 2007) | 1 line
Adding pbox.py
................
r3838 | jdh2358 | 2007-09-12 11:41:22 -0400 (Wed, 12 Sep 2007) | 1 line
removed Interval from canonical tickers and formatters
................
r3839 | mdboom | 2007-09-12 13:25:19 -0400 (Wed, 12 Sep 2007) | 3 lines
Milestone -- simple_plot.py working with new affine framework (with
the exception of dpi propagation)
................
r3842 | mdboom | 2007-09-12 15:47:56 -0400 (Wed, 12 Sep 2007) | 2 lines
More progress. Zooming and panning working thanks to John's patch.
................
r3843 | jdh2358 | 2007-09-12 16:25:17 -0400 (Wed, 12 Sep 2007) | 1 line
minor changes for gtk navigation
................
r3846 | mdboom | 2007-09-13 08:44:16 -0400 (Thu, 13 Sep 2007) | 2 lines
Minor changes -- committing so I can merge again.
................
r3848 | mdboom | 2007-09-13 14:00:10 -0400 (Thu, 13 Sep 2007) | 3 lines
New milestone -- resizing figure window works. shared_axis_demo.py
works. (Uses callbacks to track changes between axes's).
................
r3849 | mdboom | 2007-09-14 08:23:06 -0400 (Fri, 14 Sep 2007) | 2 lines
Committing this file so I can rename it
................
r3850 | mdboom | 2007-09-14 08:24:20 -0400 (Fri, 14 Sep 2007) | 2 lines
Deleting this file to rename affine.py
................
r3851 | mdboom | 2007-09-14 09:03:31 -0400 (Fri, 14 Sep 2007) | 4 lines
Removed transforms on the C++ side -- removed many methods that depend
on it in backend_agg in preparation for path generalization.
Lots of general renaming...
................
r3852 | mdboom | 2007-09-14 13:57:52 -0400 (Fri, 14 Sep 2007) | 6 lines
Sends paths to backend only once, and after that uses the "native" path by
reference with a changing transform. Started recongfiguring
patches.py to use only Paths under the hood (to take advantage of this
caching). Removed many methods from backend_agg that should
eventually be replaced by draw_path, at least in theory.
................
r3854 | mdboom | 2007-09-17 09:41:38 -0400 (Mon, 17 Sep 2007) | 1 line
Transferring work-in-progress
................
r3855 | mdboom | 2007-09-18 12:21:37 -0400 (Tue, 18 Sep 2007) | 3 lines
More code using new transformation framework. Lots of dead code
removed from backend_agg.cpp/h
................
r3856 | mdboom | 2007-09-18 15:29:21 -0400 (Tue, 18 Sep 2007) | 5 lines
Optimize shared axes (to prevent calling set_xlim/set_ylim more than
once per axes per update).
Save figure at correct dpi.
General cleanup and optimizations.
................
r3857 | mdboom | 2007-09-19 09:28:11 -0400 (Wed, 19 Sep 2007) | 2 lines
Got legend working with new transforms
................
r3858 | mdboom | 2007-09-19 12:18:51 -0400 (Wed, 19 Sep 2007) | 2 lines
Got steps_demo.py working
................
r3859 | mdboom | 2007-09-19 15:46:34 -0400 (Wed, 19 Sep 2007) | 2 lines
Lots of minor fixes
................
r3860 | mdboom | 2007-09-19 15:48:17 -0400 (Wed, 19 Sep 2007) | 2 lines
Use iterator rather than caching approach for paths
................
r3864 | mdboom | 2007-09-20 09:57:32 -0400 (Thu, 20 Sep 2007) | 2 lines
Simplification of marker paths.
................
r3865 | mdboom | 2007-09-20 09:57:59 -0400 (Thu, 20 Sep 2007) | 2 lines
Go all out with iterator (rather than copy) approach, as it is much faster.
................
r3868 | mdboom | 2007-09-20 10:26:27 -0400 (Thu, 20 Sep 2007) | 2 lines
Don't copy path array to a contiguous one.
................
r3869 | mdboom | 2007-09-20 14:00:32 -0400 (Thu, 20 Sep 2007) | 3 lines
First baby step in getting arbitrary non-linear transformations into
the pipeline.
................
r3872 | mdboom | 2007-09-21 12:52:50 -0400 (Fri, 21 Sep 2007) | 6 lines
Further progress on arbitrary transformations -- zooming and panning
now works without any log-scale-specific hacks. (Though the
underlying model is slightly wrong.)
Added graphviz output support for debugging transformation trees.
Masked array handling much more robust.
................
r3884 | mdboom | 2007-09-24 12:53:38 -0400 (Mon, 24 Sep 2007) | 2 lines
More progress. (Kind of a broken mess at the moment.)
................
r3886 | mdboom | 2007-09-24 13:33:03 -0400 (Mon, 24 Sep 2007) | 2 lines
Fixed log scaling again.
................
r3889 | mdboom | 2007-09-25 13:04:51 -0400 (Tue, 25 Sep 2007) | 2 lines
Automaticall separate affine from non-affine transforms
................
r3890 | mdboom | 2007-09-25 14:29:44 -0400 (Tue, 25 Sep 2007) | 2 lines
Minor speed improvements in new transformations.
................
r3892 | mdboom | 2007-09-25 15:53:56 -0400 (Tue, 25 Sep 2007) | 2 lines
Important bugfixes.
................
r3893 | mdboom | 2007-09-26 08:29:05 -0400 (Wed, 26 Sep 2007) | 2 lines
Committing simple_ploy_fps.py
................
r3895 | mdboom | 2007-09-26 09:53:53 -0400 (Wed, 26 Sep 2007) | 2 lines
Fix log limits. For minor speed improvements.
................
r3897 | mdboom | 2007-09-26 10:08:12 -0400 (Wed, 26 Sep 2007) | 2 lines
Fix log transforms a little.
................
r3905 | mdboom | 2007-10-01 07:44:54 -0400 (Mon, 01 Oct 2007) | 2 lines
Move ticking/formatting defaults to scale.py. Speed improvements in transforms.py
................
r3908 | mdboom | 2007-10-03 08:50:04 -0400 (Wed, 03 Oct 2007) | 2 lines
Lots of progress on Polar transform refactoring. Added point_in_path algorithm.
................
r3912 | mdboom | 2007-10-04 13:21:26 -0400 (Thu, 04 Oct 2007) | 4 lines
Lots of new docstrings. Reasonably good state for polar plots.
r-axis labels can be dragged on polar plots. r-scale can be zoomed on
polar plot. Lots of other minor changes too numerous to mention.
................
r3913 | mdboom | 2007-10-04 13:22:01 -0400 (Thu, 04 Oct 2007) | 3 lines
Sharing axes across figures is much easier now (it is the same as
within the same figure), so this demo has been updated.
................
r3914 | mdboom | 2007-10-04 14:57:27 -0400 (Thu, 04 Oct 2007) | 2 lines
Progress on agg_buffer_to_array example.
................
r3915 | mdboom | 2007-10-04 15:12:20 -0400 (Thu, 04 Oct 2007) | 3 lines
Merged from trunk (a somewhat hairy manual merge this time). Fixed
bug (on this branch only) where inverted axes were broken.
................
r3924 | mdboom | 2007-10-05 15:25:33 -0400 (Fri, 05 Oct 2007) | 4 lines
Simplified sharing axes again.
Plowing through -- making more examples work.
First pass at updating collections (LineCollection mostly works)
................
r3928 | mdboom | 2007-10-08 14:10:11 -0400 (Mon, 08 Oct 2007) | 2 lines
More work on collections.
................
r3932 | mdboom | 2007-10-10 09:37:28 -0400 (Wed, 10 Oct 2007) | 2 lines
Lots more work on making examples work. Details, details, details...
................
r3934 | mdboom | 2007-10-11 11:42:53 -0400 (Thu, 11 Oct 2007) | 3 lines
Continued progress getting more examples to work. Working examples
(with TkAgg backend only) are marked in PASSED_DEMOS for the curious.
................
r3937 | mdboom | 2007-10-12 08:27:25 -0400 (Fri, 12 Oct 2007) | 3 lines
First pass through all of the examples -- not all working yet,
though. (See PASSED_DEMOS).
................
r3938 | mdboom | 2007-10-12 10:29:57 -0400 (Fri, 12 Oct 2007) | 1 line
Forgot the __init__.py
................
r3939 | mdboom | 2007-10-12 13:30:17 -0400 (Fri, 12 Oct 2007) | 2 lines
More progress on examples.
................
r3947 | mdboom | 2007-10-15 09:49:25 -0400 (Mon, 15 Oct 2007) | 3 lines
Significant speed improvement in text layout. Reverted to fix bug in
ticklabels. Lots of other minor things.
................
r3948 | mdboom | 2007-10-15 10:03:19 -0400 (Mon, 15 Oct 2007) | 13 lines
Merged revisions 3933-3947 via svnmerge from
http://matplotlib.svn.sf.net/svnroot/matplotlib/trunk/matplotlib
........
r3935 | mdboom | 2007-10-11 13:03:50 -0400 (Thu, 11 Oct 2007) | 1 line
Fixed minor import bug
........
r3941 | jdh2358 | 2007-10-14 15:00:50 -0400 (Sun, 14 Oct 2007) | 1 line
added ellipse compare script
........
................
r3955 | mdboom | 2007-10-16 10:17:53 -0400 (Tue, 16 Oct 2007) | 2 lines
First pass at PS backend updates.
................
r3957 | mdboom | 2007-10-16 10:41:29 -0400 (Tue, 16 Oct 2007) | 1 line
Fixing mistake in last merge
................
r3958 | mdboom | 2007-10-16 15:39:57 -0400 (Tue, 16 Oct 2007) | 3 lines
figlegends work now. (Phew!) Rendering quality fixes drawing
axis-aligned line segments in Agg.
................
r3960 | mdboom | 2007-10-18 10:51:16 -0400 (Thu, 18 Oct 2007) | 2 lines
More examples working. Minor speedups.
................
r3965 | mdboom | 2007-10-18 14:11:59 -0400 (Thu, 18 Oct 2007) | 2 lines
First pass at working PDF backend.
................
r3981 | mdboom | 2007-10-23 10:23:19 -0400 (Tue, 23 Oct 2007) | 2 lines
Decreasing polar interpolation resolution.
................
r3982 | mdboom | 2007-10-23 10:24:49 -0400 (Tue, 23 Oct 2007) | 3 lines
Marker objects should be keyed off of whether or not they are filled
and their line width (since the line width affects the bounding box).
................
r3983 | mdboom | 2007-10-23 10:25:49 -0400 (Tue, 23 Oct 2007) | 2 lines
First pass at SVG support
................
r3985 | mdboom | 2007-10-23 12:40:25 -0400 (Tue, 23 Oct 2007) | 3 lines
More progress on SVG. Refactored PS collection drawing to make it
easier to reuse the (fairly complex) code.
................
r3986 | mdboom | 2007-10-23 12:54:51 -0400 (Tue, 23 Oct 2007) | 2 lines
Fix bug that broke draw_image
................
r3987 | mdboom | 2007-10-23 15:16:11 -0400 (Tue, 23 Oct 2007) | 2 lines
Fix bugs in log_demo.py
................
r3988 | mdboom | 2007-10-23 15:20:21 -0400 (Tue, 23 Oct 2007) | 2 lines
Reduce tendency to use aliased drawing.
................
r3989 | mdboom | 2007-10-23 15:47:43 -0400 (Tue, 23 Oct 2007) | 2 lines
Fix bug in clipping rectangle in PDF
................
r3990 | mdboom | 2007-10-23 15:48:14 -0400 (Tue, 23 Oct 2007) | 2 lines
Fix bug affecting legend_auto.py
................
r3992 | mdboom | 2007-10-24 12:03:49 -0400 (Wed, 24 Oct 2007) | 2 lines
Separated path utilities from backend_agg
................
r3993 | mdboom | 2007-10-24 13:11:00 -0400 (Wed, 24 Oct 2007) | 2 lines
Forgot to svn add these files in last commit.
................
r3994 | mdboom | 2007-10-24 14:01:26 -0400 (Wed, 24 Oct 2007) | 2 lines
Removing a limits change that shouldn't have been committed.
................
r3995 | mdboom | 2007-10-24 14:12:19 -0400 (Wed, 24 Oct 2007) | 2 lines
Fix masked array plotting again.
................
r3996 | mdboom | 2007-10-24 14:49:08 -0400 (Wed, 24 Oct 2007) | 3 lines
Initial pass of Gtk, Qt, Qt4, Fltk and Wx GUI backends. Lots more
examples passing.
................
r3997 | mdboom | 2007-10-24 15:22:00 -0400 (Wed, 24 Oct 2007) | 5 lines
Renamed [xmin, ymin, xmax, ymax] in Bbox to [x0, y0, x1, y1] and
provide functions that really do give xmax etc. as well.
Renamed lbrt to extents and lbwh to bounds (for consistency).
Removed some dead code.
................
r3998 | mdboom | 2007-10-24 15:42:49 -0400 (Wed, 24 Oct 2007) | 2 lines
More examples working.
................
r4000 | mdboom | 2007-10-25 10:07:44 -0400 (Thu, 25 Oct 2007) | 3 lines
table_demo working. Lots of minor fixes. Faster transforms when
debugging is turned off.
................
r4004 | mdboom | 2007-10-25 15:16:11 -0400 (Thu, 25 Oct 2007) | 3 lines
Increased coverage of backend_driver.py to include almost everything
in axes.py. Lots of little bug fixes.
................
r4011 | mdboom | 2007-10-26 11:58:50 -0400 (Fri, 26 Oct 2007) | 2 lines
More coverage. Add draw_path_collection to SVG.
................
r4012 | mdboom | 2007-10-26 13:01:28 -0400 (Fri, 26 Oct 2007) | 2 lines
Added BboxTransformFrom/To for more efficient bounding box transforms.
................
r4017 | mdboom | 2007-10-26 14:00:23 -0400 (Fri, 26 Oct 2007) | 2 lines
Removed unused imports.
................
r4018 | mdboom | 2007-10-26 14:04:51 -0400 (Fri, 26 Oct 2007) | 2 lines
Fix polar plot title so it doesn't clash with 90 degree value.
................
r4019 | mdboom | 2007-10-26 14:32:44 -0400 (Fri, 26 Oct 2007) | 3 lines
Can't drag zoom on a polar plot.
Finessing Agg drawing quality a little bit.
................
r4052 | mdboom | 2007-10-29 11:20:13 -0400 (Mon, 29 Oct 2007) | 2 lines
Revert this example to like it is in the trunk.
................
r4053 | mdboom | 2007-10-29 11:21:49 -0400 (Mon, 29 Oct 2007) | 2 lines
Lots of minor bug fixes.
................
r4054 | mdboom | 2007-10-29 12:55:53 -0400 (Mon, 29 Oct 2007) | 2 lines
More examples working.
................
r4055 | mdboom | 2007-10-29 13:31:24 -0400 (Mon, 29 Oct 2007) | 2 lines
Massive CHANGELOG and API_CHANGES entries about this refactoring.
................
r4056 | mdboom | 2007-10-29 13:39:06 -0400 (Mon, 29 Oct 2007) | 2 lines
Oops -- this shouldn't have been committed.
................
r4058 | mdboom | 2007-10-29 14:20:11 -0400 (Mon, 29 Oct 2007) | 2 lines
Updated.
................
r4060 | mdboom | 2007-10-29 14:37:17 -0400 (Mon, 29 Oct 2007) | 2 lines
Fix clip path in polar plot legend.
................
r4122 | mdboom | 2007-11-06 10:37:44 -0500 (Tue, 06 Nov 2007) | 3 lines
Minor speed improvement (thanks to Eric Firing).
Also use matplotlib.numerix.npyma instead of numpy.ma
................
r4123 | mdboom | 2007-11-06 10:48:22 -0500 (Tue, 06 Nov 2007) | 2 lines
Mistake in last commit.
................
r4124 | mdboom | 2007-11-06 10:50:51 -0500 (Tue, 06 Nov 2007) | 2 lines
Update docstring to reflect reality.
................
r4133 | mdboom | 2007-11-06 14:46:45 -0500 (Tue, 06 Nov 2007) | 2 lines
Updated docstring to reflect current reality.
................
r4134 | mdboom | 2007-11-06 14:48:40 -0500 (Tue, 06 Nov 2007) | 2 lines
Use "from matplotlib.numerix import npyma as ma"
................
r4136 | mdboom | 2007-11-06 16:33:37 -0500 (Tue, 06 Nov 2007) | 10 lines
Speed up pcolor_demo.py "benchmark" initialization by a factor of 2.
Cache the automatically created path codes by their length.
pcolor, quadmesh etc. create lots of polylines of the same length, and
there is no need to create a new identical codes array each time.
(Definite speed improvement, incredible memory improvement).
Change the default behavior to create open paths (which don't result
in a memory copy). Fix places that were relying on
automatically-created closed paths to create closed paths themselves
(and thus avoiding a copy).
................
r4142 | mdboom | 2007-11-07 10:31:37 -0500 (Wed, 07 Nov 2007) | 7 lines
Further speed improvements. For collections, now has faster ignoring
of elements that aren't provided, such as offsets. Paths now do not
even store the "default" codes array -- which is MOVETO followed by N
LINETOs. These are generated automatically by the iterators if no
codes array is provided. (Should also result in significant memory
savings for graphs with many points.)
................
r4152 | mdboom | 2007-11-07 15:13:35 -0500 (Wed, 07 Nov 2007) | 4 lines
Further speed improvements. Quadmesh extension code (still not as
fast as the old version, for various reasons.)
Fix bugs in quadmesh masking in PDF and PS backends.
................
r4153 | mdboom | 2007-11-07 15:38:46 -0500 (Wed, 07 Nov 2007) | 2 lines
Update to use modern Numpy C API
................
r4154 | mdboom | 2007-11-07 16:20:45 -0500 (Wed, 07 Nov 2007) | 2 lines
First pass at Cairo support on the branch.
................
r4157 | mdboom | 2007-11-08 08:21:17 -0500 (Thu, 08 Nov 2007) | 2 lines
Small bugfix to compile on gcc 4.x (Thanks, Eric)
................
r4158 | mdboom | 2007-11-08 09:05:18 -0500 (Thu, 08 Nov 2007) | 3 lines
Add a background color to the axes so it's easier to tell if there is
a bug in the masked values.
................
r4159 | mdboom | 2007-11-08 09:06:25 -0500 (Thu, 08 Nov 2007) | 3 lines
Get wxagg extension working again. Factor out the new Bbox conversion
code into agg_py_transforms.h
................
r4161 | mdboom | 2007-11-08 11:26:31 -0500 (Thu, 08 Nov 2007) | 2 lines
Updating the simple_plot_fps benchmark.
................
r4162 | mdboom | 2007-11-08 11:27:18 -0500 (Thu, 08 Nov 2007) | 2 lines
Put a generic non-optimized draw_markers implementation in backend_bases.
................
r4184 | mdboom | 2007-11-09 11:33:58 -0500 (Fri, 09 Nov 2007) | 2 lines
Fix misaligned clipping rectangle.
................
r4185 | mdboom | 2007-11-09 11:35:15 -0500 (Fri, 09 Nov 2007) | 2 lines
Get wx backend working with wxGraphicsContext drawing.
................
r4186 | mdboom | 2007-11-09 11:40:25 -0500 (Fri, 09 Nov 2007) | 2 lines
Removed debugging message.
................
r4189 | mdboom | 2007-11-09 14:09:42 -0500 (Fri, 09 Nov 2007) | 2 lines
Add support for nonuniform grids to imshow.
................
r4190 | mdboom | 2007-11-09 14:23:42 -0500 (Fri, 09 Nov 2007) | 1 line
Merging trunk to branch
................
r4245 | mdboom | 2007-11-13 11:02:47 -0500 (Tue, 13 Nov 2007) | 2 lines
Bug fixes.
................
r4246 | mdboom | 2007-11-13 11:08:24 -0500 (Tue, 13 Nov 2007) | 2 lines
Don't clip ticks.
................
r4247 | mdboom | 2007-11-13 11:08:33 -0500 (Tue, 13 Nov 2007) | 2 lines
Bugfix for polar plots.
................
r4282 | mdboom | 2007-11-14 13:36:45 -0500 (Wed, 14 Nov 2007) | 2 lines
Fix bug in PDF backend.
................
r4283 | mdboom | 2007-11-14 13:38:05 -0500 (Wed, 14 Nov 2007) | 2 lines
Fix alignment of clipping rectangles.
................
r4284 | mdboom | 2007-11-14 13:42:52 -0500 (Wed, 14 Nov 2007) | 2 lines
Update to use new numpy macros.
................
r4285 | mdboom | 2007-11-14 13:43:35 -0500 (Wed, 14 Nov 2007) | 2 lines
Build the path module (inadvertently removed during a merge).
................
r4286 | mdboom | 2007-11-14 13:44:39 -0500 (Wed, 14 Nov 2007) | 3 lines
New path-related utilities (used for an aborted attempt at fixing
contouring -- may be useful in other contexts in the future).
................
r4302 | mdboom | 2007-11-15 10:13:38 -0500 (Thu, 15 Nov 2007) | 2 lines
Fix Subplot backward-incompatibility.
................
r4303 | mdboom | 2007-11-15 10:14:47 -0500 (Thu, 15 Nov 2007) | 5 lines
Cairo backend fixes:
- Avoid crash when path is too long
- Fix alpha filling
- Fix path clipping
................
r4304 | mdboom | 2007-11-15 10:15:21 -0500 (Thu, 15 Nov 2007) | 2 lines
Minor speed improvements.
................
r4305 | mdboom | 2007-11-15 10:18:42 -0500 (Thu, 15 Nov 2007) | 2 lines
Speed improvements.
................
r4306 | mdboom | 2007-11-15 11:28:54 -0500 (Thu, 15 Nov 2007) | 2 lines
Speed improvements.
................
r4307 | mdboom | 2007-11-15 11:29:40 -0500 (Thu, 15 Nov 2007) | 2 lines
Updated benchmark
................
r4309 | mdboom | 2007-11-15 12:17:02 -0500 (Thu, 15 Nov 2007) | 2 lines
Bugfixes (getting some examples to work again).
................
r4311 | mdboom | 2007-11-15 13:10:54 -0500 (Thu, 15 Nov 2007) | 2 lines
Major speed improvement (duplicate draws were being emitted).
................
r4314 | mdboom | 2007-11-15 13:35:30 -0500 (Thu, 15 Nov 2007) | 2 lines
Fix colorbar drawing.
................
r4319 | mdboom | 2007-11-15 15:05:46 -0500 (Thu, 15 Nov 2007) | 2 lines
Fix value display in log-scaled plots.
................
r4320 | mdboom | 2007-11-15 15:26:03 -0500 (Thu, 15 Nov 2007) | 2 lines
Fix gridlines in log scale.
................
r4323 | mdboom | 2007-11-15 16:12:54 -0500 (Thu, 15 Nov 2007) | 2 lines
Don't create masked arrays unless we absolutely have to.
................
r4324 | mdboom | 2007-11-15 16:13:52 -0500 (Thu, 15 Nov 2007) | 2 lines
Speed up auto-legend.
................
r4333 | mdboom | 2007-11-16 10:53:57 -0500 (Fri, 16 Nov 2007) | 1 line
Upgrade to Agg 2.4; Stop building Agg SWIG wrappers and remove small dependency on them.
................
r4345 | mdboom | 2007-11-16 15:29:51 -0500 (Fri, 16 Nov 2007) | 2 lines
Minor speed improvement.
................
r4388 | mdboom | 2007-11-20 08:14:34 -0500 (Tue, 20 Nov 2007) | 3 lines
Reverting imshow -- these issues are being dealt with by Eric Firing
on the trunk.
................
r4392 | mdboom | 2007-11-20 08:50:04 -0500 (Tue, 20 Nov 2007) | 2 lines
Removing trailing whitespace so a merge from trunk will be possible.
................
r4398 | mdboom | 2007-11-20 16:00:20 -0500 (Tue, 20 Nov 2007) | 6 lines
Support mixed-mode rendering the PDF backend. This allows some things
to be rendered as vectors and some as rasters. At the moment, mostly
as a proof-of-concept, all quadmeshes are rendered as rasters with the
PDF backend.
Also make PDF backend resolution independent.
................
r4399 | mdboom | 2007-11-20 17:00:51 -0500 (Tue, 20 Nov 2007) | 4 lines
Reduce file sizes for mixed-mode PDFs by only outputting the part of
the image with non-transparent pixels.
Minor speed improvement in MixedModeRenderer.
................
r4439 | mdboom | 2007-11-26 10:18:40 -0500 (Mon, 26 Nov 2007) | 2 lines
Remove draw_arc (which isn't in the new backend renderer interface).
................
r4440 | mdboom | 2007-11-26 10:30:12 -0500 (Mon, 26 Nov 2007) | 2 lines
Support mixed-mode rendering in the SVG backend.
................
r4445 | mdboom | 2007-11-26 11:43:19 -0500 (Mon, 26 Nov 2007) | 2 lines
Fix compilation error on 64-bit platforms.
................
r4446 | mdboom | 2007-11-26 11:52:53 -0500 (Mon, 26 Nov 2007) | 3 lines
Fix zooming with bounding box in Gtk and Qt backends (others seem to
already work). Fix text rotation in Wx (non-Agg) backend.
................
r4447 | mdboom | 2007-11-26 11:59:29 -0500 (Mon, 26 Nov 2007) | 2 lines
Fix compile error on 64-bit platforms.
................
r4448 | mdboom | 2007-11-26 12:23:18 -0500 (Mon, 26 Nov 2007) | 2 lines
Still trying to fix compile error on 64-bit platforms...
................
r4469 | mdboom | 2007-11-27 12:40:45 -0500 (Tue, 27 Nov 2007) | 2 lines
Fix memory leak and increase performance in quadmesh drawing (Agg)
................
r4473 | mdboom | 2007-11-27 15:03:48 -0500 (Tue, 27 Nov 2007) | 2 lines
Improve speed of quad mesh drawing (by about 25%)
................
r4480 | mdboom | 2007-11-28 08:40:54 -0500 (Wed, 28 Nov 2007) | 3 lines
Fix marker drawing bug, and improve speed (by using buffers on the
stack if possible).
................
r4481 | mdboom | 2007-11-28 08:42:39 -0500 (Wed, 28 Nov 2007) | 2 lines
Major speed improvements for auto-placing of legends.
................
r4488 | mdboom | 2007-11-28 13:26:40 -0500 (Wed, 28 Nov 2007) | 2 lines
Increase performance of draw_markers in Agg backend
................
r4489 | mdboom | 2007-11-28 13:27:43 -0500 (Wed, 28 Nov 2007) | 2 lines
Speed improvements -- determine path extents in C
................
r4493 | mdboom | 2007-11-28 15:36:22 -0500 (Wed, 28 Nov 2007) | 2 lines
Fix PDF font size bug.
................
r4494 | mdboom | 2007-11-28 15:36:45 -0500 (Wed, 28 Nov 2007) | 2 lines
Fix Ps import bug
................
r4495 | mdboom | 2007-11-28 15:37:04 -0500 (Wed, 28 Nov 2007) | 2 lines
Minor fixes.
................
r4500 | mdboom | 2007-11-29 08:50:25 -0500 (Thu, 29 Nov 2007) | 2 lines
Fix mri_with_eeg example
................
r4501 | mdboom | 2007-11-29 10:40:42 -0500 (Thu, 29 Nov 2007) | 2 lines
Ran "astyle --style=ansi" to convert to ANSI style.
................
r4521 | mdboom | 2007-11-30 10:06:56 -0500 (Fri, 30 Nov 2007) | 2 lines
Get Gtk backend working.
................
r4523 | mdboom | 2007-11-30 10:50:13 -0500 (Fri, 30 Nov 2007) | 2 lines
Cleanup some variable names.
................
r4524 | mdboom | 2007-11-30 10:50:35 -0500 (Fri, 30 Nov 2007) | 2 lines
Fix bb numerals in mathtext.
................
r4525 | mdboom | 2007-11-30 10:51:18 -0500 (Fri, 30 Nov 2007) | 2 lines
Fix shadows (see pie_demo.py)
................
r4527 | mdboom | 2007-11-30 11:16:34 -0500 (Fri, 30 Nov 2007) | 2 lines
Fix Cairo alpha-blending.
................
r4565 | mdboom | 2007-12-03 12:14:20 -0500 (Mon, 03 Dec 2007) | 2 lines
Fix bug in pcolormesh.
................
r4566 | mdboom | 2007-12-03 12:15:06 -0500 (Mon, 03 Dec 2007) | 3 lines
Use non-equal dimensions for mesh to highlight bug in pcolormesh (if
it ever returns).
................
r4568 | mdboom | 2007-12-03 14:07:36 -0500 (Mon, 03 Dec 2007) | 3 lines
Fix image interpolation edges for Agg 2.4. It no longer needs funny
workarounds with memory copies to interpolate the edges of the image correctly.
................
r4569 | mdboom | 2007-12-03 14:16:17 -0500 (Mon, 03 Dec 2007) | 2 lines
Fix exception when a particular contour doesn't exist.
................
r4577 | mdboom | 2007-12-04 11:01:06 -0500 (Tue, 04 Dec 2007) | 2 lines
Fix bug when collection is empty.
................
r4578 | mdboom | 2007-12-04 11:06:20 -0500 (Tue, 04 Dec 2007) | 1 line
Oops in last commit
................
r4590 | mdboom | 2007-12-04 15:06:45 -0500 (Tue, 04 Dec 2007) | 2 lines
Bugfix for missing markers. Bugfix for faceted pcolor-based quadmeshes.
................
r4591 | mdboom | 2007-12-04 15:07:31 -0500 (Tue, 04 Dec 2007) | 2 lines
Bugfix for faceted pcolor-based quadmeshes.
................
r4592 | mdboom | 2007-12-04 15:07:59 -0500 (Tue, 04 Dec 2007) | 2 lines
Bugfix for broken_barh demo
................
r4593 | mdboom | 2007-12-04 15:08:28 -0500 (Tue, 04 Dec 2007) | 2 lines
Fix direction of left and right caret markers.
................
r4594 | mdboom | 2007-12-04 15:28:24 -0500 (Tue, 04 Dec 2007) | 2 lines
Fix bbox_artist
................
r4595 | mdboom | 2007-12-04 15:29:54 -0500 (Tue, 04 Dec 2007) | 2 lines
Fix interpolation so it wraps rather than clips.
................
r4600 | mdboom | 2007-12-04 15:55:04 -0500 (Tue, 04 Dec 2007) | 2 lines
Fix inverted x-axis bug.
................
r4602 | mdboom | 2007-12-04 16:30:06 -0500 (Tue, 04 Dec 2007) | 2 lines
Bugfix.
................
r4603 | mdboom | 2007-12-04 16:33:33 -0500 (Tue, 04 Dec 2007) | 3 lines
Add experimental support for auto-layout of axes on the figure, to
prevent ticks and labels from overlapping things in other axes.
................
r4604 | mdboom | 2007-12-04 16:53:43 -0500 (Tue, 04 Dec 2007) | 2 lines
Fix xlabel on top axes to say what it is.
................
r4615 | mdboom | 2007-12-05 10:36:48 -0500 (Wed, 05 Dec 2007) | 3 lines
Make new auto-layout stuff optional (so it can be experimented on
without breaking too much.)
................
r4624 | mdboom | 2007-12-05 13:14:38 -0500 (Wed, 05 Dec 2007) | 2 lines
Make autolayout a configuration option.
................
r4625 | mdboom | 2007-12-05 13:56:18 -0500 (Wed, 05 Dec 2007) | 2 lines
Make things more robust to changes in dpi.
................
r4626 | mdboom | 2007-12-05 13:56:42 -0500 (Wed, 05 Dec 2007) | 2 lines
Avoid matching widths and heights too often.
................
r4627 | mdboom | 2007-12-05 13:57:06 -0500 (Wed, 05 Dec 2007) | 2 lines
Prevent mathtext cache from getting out of hand.
................
r4628 | mdboom | 2007-12-05 13:57:54 -0500 (Wed, 05 Dec 2007) | 2 lines
Remove dead code.
................
r4641 | mdboom | 2007-12-06 08:37:29 -0500 (Thu, 06 Dec 2007) | 2 lines
Fix backward-compatibility breakage of apply_aspect.
................
r4642 | mdboom | 2007-12-06 09:55:01 -0500 (Thu, 06 Dec 2007) | 2 lines
Revert examples to work best without auto-layout.
................
r4646 | mdboom | 2007-12-06 12:09:53 -0500 (Thu, 06 Dec 2007) | 2 lines
Fix an incorrect merge from trunk.
................
r4652 | mdboom | 2007-12-06 13:49:35 -0500 (Thu, 06 Dec 2007) | 2 lines
Making note about broken unit test.
................
r4680 | mdboom | 2007-12-10 09:59:49 -0500 (Mon, 10 Dec 2007) | 2 lines
Use an 8-spline approximation of an ellipse instead of a 4-spline one.
................
r4681 | mdboom | 2007-12-10 10:00:03 -0500 (Mon, 10 Dec 2007) | 2 lines
Bugfix.
................
r4682 | mdboom | 2007-12-10 10:03:33 -0500 (Mon, 10 Dec 2007) | 2 lines
Draw aligned lines more often than before.
................
r4683 | mdboom | 2007-12-10 10:21:58 -0500 (Mon, 10 Dec 2007) | 2 lines
Fix variable name.
................
r4691 | mdboom | 2007-12-10 11:26:00 -0500 (Mon, 10 Dec 2007) | 2 lines
Somehow the merge went awry last time. Fixing.
................
r4693 | mdboom | 2007-12-10 14:46:00 -0500 (Mon, 10 Dec 2007) | 2 lines
Numpify arc/wedge approximation.
................
r4694 | mdboom | 2007-12-10 14:53:12 -0500 (Mon, 10 Dec 2007) | 2 lines
Simplify even more
................
r4700 | mdboom | 2007-12-11 19:15:23 -0500 (Tue, 11 Dec 2007) | 1 line
Added (experimental) support for large arcs
................
r4701 | mdboom | 2007-12-12 08:48:09 -0500 (Wed, 12 Dec 2007) | 3 lines
Make the arc edge detection algorithm be dynamic based on the size of
the ellipse, rather than always on (that was just for debugging).
................
r4702 | mdboom | 2007-12-12 08:54:56 -0500 (Wed, 12 Dec 2007) | 2 lines
Fix a bad merge.
................
r4703 | mdboom | 2007-12-12 08:55:12 -0500 (Wed, 12 Dec 2007) | 2 lines
Layout fix.
................
r4714 | mdboom | 2007-12-12 14:11:44 -0500 (Wed, 12 Dec 2007) | 2 lines
Code cleanup
................
r4716 | mdboom | 2007-12-12 15:06:30 -0500 (Wed, 12 Dec 2007) | 3 lines
Save images to Svg files without writing the image data out as a
temporary file.
................
r4717 | mdboom | 2007-12-12 15:13:52 -0500 (Wed, 12 Dec 2007) | 2 lines
Somehow this fix didn't get merged from trunk... (Saving gzipped Svg files)
................
r4723 | mdboom | 2007-12-13 13:12:51 -0500 (Thu, 13 Dec 2007) | 2 lines
Use numpy for math.
................
r4724 | mdboom | 2007-12-13 13:13:04 -0500 (Thu, 13 Dec 2007) | 2 lines
Clarify comment.
................
r4725 | mdboom | 2007-12-13 13:13:49 -0500 (Thu, 13 Dec 2007) | 2 lines
Minor speedup in mathtext parsing.
................
r4729 | mdboom | 2007-12-13 13:42:54 -0500 (Thu, 13 Dec 2007) | 2 lines
Fix some regular expressions.
................
r4733 | mdboom | 2007-12-14 15:07:59 -0500 (Fri, 14 Dec 2007) | 3 lines
First pass at symmetrical log plots. Expose xscale() and yscale()
through pyplot.
................
r4734 | mdboom | 2007-12-14 15:08:22 -0500 (Fri, 14 Dec 2007) | 2 lines
Fix minimum value of bars so it looks correct upon zooming.
................
r4756 | mdboom | 2007-12-17 10:41:34 -0500 (Mon, 17 Dec 2007) | 2 lines
Bugfix
................
r4757 | mdboom | 2007-12-17 10:41:47 -0500 (Mon, 17 Dec 2007) | 2 lines
Make filename match example.
................
r4760 | mdboom | 2007-12-17 13:28:03 -0500 (Mon, 17 Dec 2007) | 2 lines
Added Mercator latitude scale.
................
r4761 | mdboom | 2007-12-17 13:29:04 -0500 (Mon, 17 Dec 2007) | 2 lines
Minor speed improvement
................
r4762 | mdboom | 2007-12-18 08:02:33 -0500 (Tue, 18 Dec 2007) | 2 lines
Minor speed improvement
................
r4763 | mdboom | 2007-12-18 08:08:04 -0500 (Tue, 18 Dec 2007) | 2 lines
Don't allocate the clipping path buffers unless we need them.
................
r4764 | mdboom | 2007-12-18 10:29:53 -0500 (Tue, 18 Dec 2007) | 2 lines
Fix bug in calculating minpos.
................
r4765 | mdboom | 2007-12-18 10:35:06 -0500 (Tue, 18 Dec 2007) | 2 lines
Fix log scaling of polar plots.
................
r4766 | mdboom | 2007-12-18 12:36:11 -0500 (Tue, 18 Dec 2007) | 2 lines
Improved documentation and efficiency...
................
r4767 | mdboom | 2007-12-18 12:46:01 -0500 (Tue, 18 Dec 2007) | 4 lines
Preliminary version of "adding new scales and projections" document.
(In reST, since that appears to be where mpl documentation is
heading.)
................
r4771 | mdboom | 2007-12-18 16:08:19 -0500 (Tue, 18 Dec 2007) | 2 lines
Minor changes.
................
r4772 | mdboom | 2007-12-18 16:09:25 -0500 (Tue, 18 Dec 2007) | 2 lines
Better docstrings for set_x/yscale and friends.
................
r4774 | mdboom | 2007-12-19 15:51:16 -0500 (Wed, 19 Dec 2007) | 2 lines
Fix aspect ratio bug.
................
r4776 | mdboom | 2007-12-20 08:00:20 -0500 (Thu, 20 Dec 2007) | 2 lines
Add very preliminary and experimental support for some geo projections.
................
r4777 | mdboom | 2007-12-20 08:00:48 -0500 (Thu, 20 Dec 2007) | 2 lines
Minor bugfix in polar transforms.
................
r4778 | mdboom | 2007-12-20 08:01:07 -0500 (Thu, 20 Dec 2007) | 2 lines
Minor efficiency improvement.
................
r4779 | mdboom | 2007-12-20 11:54:34 -0500 (Thu, 20 Dec 2007) | 3 lines
Minor speedup by not calculating the position of ticks/grids/text that
aren't there.
................
r4780 | mdboom | 2007-12-20 12:14:03 -0500 (Thu, 20 Dec 2007) | 2 lines
I can't spell ;(
................
r4781 | mdboom | 2007-12-20 12:14:36 -0500 (Thu, 20 Dec 2007) | 2 lines
Remove Mollweide from options, since it's currently broken anyway.
................
r4782 | mdboom | 2007-12-20 12:18:12 -0500 (Thu, 20 Dec 2007) | 2 lines
Major speed improvement for non-rectilinear projections.
................
r4784 | mdboom | 2007-12-21 10:13:14 -0500 (Fri, 21 Dec 2007) | 2 lines
Update unit test to use Arc instead of Ellipse.
................
r4803 | mdboom | 2008-01-07 16:15:58 -0500 (Mon, 07 Jan 2008) | 5 lines
Provide heavily-documented examples for adding new scales and
projections.
Fix various bugs related to non-rectangular clipping.
Remove MercatorLatitude scale from core and put it in an example.
................
r4805 | efiring | 2008-01-07 22:11:38 -0500 (Mon, 07 Jan 2008) | 2 lines
Remove spurious right parenthesis
................
Modified Paths:
--------------
trunk/matplotlib/API_CHANGES
trunk/matplotlib/CHANGELOG
trunk/matplotlib/MIGRATION.txt
trunk/matplotlib/examples/agg_buffer_to_array.py
trunk/matplotlib/examples/backend_driver.py
trunk/matplotlib/examples/clippath_test.py
trunk/matplotlib/examples/collections_demo.py
trunk/matplotlib/examples/contour_demo.py
trunk/matplotlib/examples/dynamic_demo_wx.py
trunk/matplotlib/examples/embedding_in_gtk.py
trunk/matplotlib/examples/embedding_in_gtk2.py
trunk/matplotlib/examples/embedding_in_gtk3.py
trunk/matplotlib/examples/embedding_in_tk.py
trunk/matplotlib/examples/embedding_in_tk2.py
trunk/matplotlib/examples/embedding_in_wx.py
trunk/matplotlib/examples/histogram_demo_canvasagg.py
trunk/matplotlib/examples/line_collection2.py
trunk/matplotlib/examples/mri_with_eeg.py
trunk/matplotlib/examples/pick_event_demo.py
trunk/matplotlib/examples/polar_bar.py
trunk/matplotlib/examples/polar_demo.py
trunk/matplotlib/examples/poly_editor.py
trunk/matplotlib/examples/quadmesh_demo.py
trunk/matplotlib/examples/scatter_star_poly.py
trunk/matplotlib/examples/shared_axis_across_figures.py
trunk/matplotlib/examples/to_numeric.py
trunk/matplotlib/lib/matplotlib/_mathtext_data.py
trunk/matplotlib/lib/matplotlib/art3d.py
trunk/matplotlib/lib/matplotlib/artist.py
trunk/matplotlib/lib/matplotlib/axes.py
trunk/matplotlib/lib/matplotlib/axes3d.py
trunk/matplotlib/lib/matplotlib/axis.py
trunk/matplotlib/lib/matplotlib/backend_bases.py
trunk/matplotlib/lib/matplotlib/backends/backend_agg.py
trunk/matplotlib/lib/matplotlib/backends/backend_cairo.py
trunk/matplotlib/lib/matplotlib/backends/backend_fltkagg.py
trunk/matplotlib/lib/matplotlib/backends/backend_gdk.py
trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py
trunk/matplotlib/lib/matplotlib/backends/backend_gtkagg.py
trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py
trunk/matplotlib/lib/matplotlib/backends/backend_ps.py
trunk/matplotlib/lib/matplotlib/backends/backend_qt.py
trunk/matplotlib/lib/matplotlib/backends/backend_qt4.py
trunk/matplotlib/lib/matplotlib/backends/backend_qt4agg.py
trunk/matplotlib/lib/matplotlib/backends/backend_qtagg.py
trunk/matplotlib/lib/matplotlib/backends/backend_svg.py
trunk/matplotlib/lib/matplotlib/backends/backend_template.py
trunk/matplotlib/lib/matplotlib/backends/backend_tkagg.py
trunk/matplotlib/lib/matplotlib/backends/backend_wx.py
trunk/matplotlib/lib/matplotlib/backends/backend_wxagg.py
trunk/matplotlib/lib/matplotlib/backends/tkagg.py
trunk/matplotlib/lib/matplotlib/cbook.py
trunk/matplotlib/lib/matplotlib/collections.py
trunk/matplotlib/lib/matplotlib/colorbar.py
trunk/matplotlib/lib/matplotlib/colors.py
trunk/matplotlib/lib/matplotlib/contour.py
trunk/matplotlib/lib/matplotlib/dates.py
trunk/matplotlib/lib/matplotlib/figure.py
trunk/matplotlib/lib/matplotlib/finance.py
trunk/matplotlib/lib/matplotlib/font_manager.py
trunk/matplotlib/lib/matplotlib/fontconfig_pattern.py
trunk/matplotlib/lib/matplotlib/image.py
trunk/matplotlib/lib/matplotlib/legend.py
trunk/matplotlib/lib/matplotlib/lines.py
trunk/matplotlib/lib/matplotlib/mathtext.py
trunk/matplotlib/lib/matplotlib/mlab.py
trunk/matplotlib/lib/matplotlib/mpl.py
trunk/matplotlib/lib/matplotlib/patches.py
trunk/matplotlib/lib/matplotlib/proj3d.py
trunk/matplotlib/lib/matplotlib/pyplot.py
trunk/matplotlib/lib/matplotlib/quiver.py
trunk/matplotlib/lib/matplotlib/rcsetup.py
trunk/matplotlib/lib/matplotlib/table.py
trunk/matplotlib/lib/matplotlib/texmanager.py
trunk/matplotlib/lib/matplotlib/text.py
trunk/matplotlib/lib/matplotlib/ticker.py
trunk/matplotlib/lib/matplotlib/transforms.py
trunk/matplotlib/lib/matplotlib/units.py
trunk/matplotlib/lib/matplotlib/widgets.py
trunk/matplotlib/matplotlibrc.template
trunk/matplotlib/setup.py
trunk/matplotlib/setupext.py
trunk/matplotlib/src/_backend_agg.cpp
trunk/matplotlib/src/_backend_agg.h
trunk/matplotlib/src/_gtkagg.cpp
trunk/matplotlib/src/_image.cpp
trunk/matplotlib/src/_tkagg.cpp
trunk/matplotlib/src/_wxagg.cpp
trunk/matplotlib/unit/ellipse_compare.py
Added Paths:
-----------
trunk/matplotlib/PASSED_DEMOS
trunk/matplotlib/agg24/
trunk/matplotlib/agg24/include/
trunk/matplotlib/agg24/include/agg_alpha_mask_u8.h
trunk/matplotlib/agg24/include/agg_arc.h
trunk/matplotlib/agg24/include/agg_array.h
trunk/matplotlib/agg24/include/agg_arrowhead.h
trunk/matplotlib/agg24/include/agg_basics.h
trunk/matplotlib/agg24/include/agg_bezier_arc.h
trunk/matplotlib/agg24/include/agg_bitset_iterator.h
trunk/matplotlib/agg24/include/agg_blur.h
trunk/matplotlib/agg24/include/agg_bounding_rect.h
trunk/matplotlib/agg24/include/agg_bspline.h
trunk/matplotlib/agg24/include/agg_clip_liang_barsky.h
trunk/matplotlib/agg24/include/agg_color_gray.h
trunk/matplotlib/agg24/include/agg_color_rgba.h
trunk/matplotlib/agg24/include/agg_config.h
trunk/matplotlib/agg24/include/agg_conv_adaptor_vcgen.h
trunk/matplotlib/agg24/include/agg_conv_adaptor_vpgen.h
trunk/matplotlib/agg24/include/agg_conv_bspline.h
trunk/matplotlib/agg24/include/agg_conv_clip_polygon.h
trunk/matplotlib/agg24/include/agg_conv_clip_polyline.h
trunk/matplotlib/agg24/include/agg_conv_close_polygon.h
trunk/matplotlib/agg24/include/agg_conv_concat.h
trunk/matplotlib/agg24/include/agg_conv_contour.h
trunk/matplotlib/agg24/include/agg_conv_curve.h
trunk/matplotlib/agg24/include/agg_conv_dash.h
trunk/matplotlib/agg24/include/agg_conv_gpc.h
trunk/matplotlib/agg24/include/agg_conv_marker.h
trunk/matplotlib/agg24/include/agg_conv_marker_adaptor.h
trunk/matplotlib/agg24/include/agg_conv_segmentator.h
trunk/matplotlib/agg24/include/agg_conv_shorten_path.h
trunk/matplotlib/agg24/include/agg_conv_smooth_poly1.h
trunk/matplotlib/agg24/include/agg_conv_stroke.h
trunk/matplotlib/agg24/include/agg_conv_transform.h
trunk/matplotlib/agg24/include/agg_conv_unclose_polygon.h
trunk/matplotlib/agg24/include/agg_curves.h
trunk/matplotlib/agg24/include/agg_dda_line.h
trunk/matplotlib/agg24/include/agg_ellipse.h
trunk/matplotlib/agg24/include/agg_ellipse_bresenham.h
trunk/matplotlib/agg24/include/agg_embedded_raster_fonts.h
trunk/matplotlib/agg24/include/agg_font_cache_manager.h
trunk/matplotlib/agg24/include/agg_gamma_functions.h
trunk/matplotlib/agg24/include/agg_gamma_lut.h
trunk/matplotlib/agg24/include/agg_glyph_raster_bin.h
trunk/matplotlib/agg24/include/agg_gradient_lut.h
trunk/matplotlib/agg24/include/agg_gsv_text.h
trunk/matplotlib/agg24/include/agg_image_accessors.h
trunk/matplotlib/agg24/include/agg_image_filters.h
trunk/matplotlib/agg24/include/agg_line_aa_basics.h
trunk/matplotlib/agg24/include/agg_math.h
trunk/matplotlib/agg24/include/agg_math_stroke.h
trunk/matplotlib/agg24/include/agg_path_length.h
trunk/matplotlib/agg24/include/agg_path_storage.h
trunk/matplotlib/agg24/include/agg_path_storage_integer.h
trunk/matplotlib/agg24/include/agg_pattern_filters_rgba.h
trunk/matplotlib/agg24/include/agg_pixfmt_amask_adaptor.h
trunk/matplotlib/agg24/include/agg_pixfmt_gray.h
trunk/matplotlib/agg24/include/agg_pixfmt_rgb.h
trunk/matplotlib/agg24/include/agg_pixfmt_rgb_packed.h
trunk/matplotlib/agg24/include/agg_pixfmt_rgba.h
trunk/matplotlib/agg24/include/agg_pixfmt_transposer.h
trunk/matplotlib/agg24/include/agg_rasterizer_cells_aa.h
trunk/matplotlib/agg24/include/agg_rasterizer_compound_aa.h
trunk/matplotlib/agg24/include/agg_rasterizer_outline.h
trunk/matplotlib/agg24/include/agg_rasterizer_outline_aa.h
trunk/matplotlib/agg24/include/agg_rasterizer_scanline_aa.h
trunk/matplotlib/agg24/include/agg_rasterizer_sl_clip.h
trunk/matplotlib/agg24/include/agg_renderer_base.h
trunk/matplotlib/agg24/include/agg_renderer_markers.h
trunk/matplotlib/agg24/include/agg_renderer_mclip.h
trunk/matplotlib/agg24/include/agg_renderer_outline_aa.h
trunk/matplotlib/agg24/include/agg_renderer_outline_image.h
trunk/matplotlib/agg24/include/agg_renderer_primitives.h
trunk/matplotlib/agg24/include/agg_renderer_raster_text.h
trunk/matplotlib/agg24/include/agg_renderer_scanline.h
trunk/matplotlib/agg24/include/agg_rendering_buffer.h
trunk/matplotlib/agg24/include/agg_rendering_buffer_dynarow.h
trunk/matplotlib/agg24/include/agg_rounded_rect.h
trunk/matplotlib/agg24/include/agg_scanline_bin.h
trunk/matplotlib/agg24/include/agg_scanline_boolean_algebra.h
trunk/matplotlib/agg24/include/agg_scanline_p.h
trunk/matplotlib/agg24/include/agg_scanline_storage_aa.h
trunk/matplotlib/agg24/include/agg_scanline_storage_bin.h
trunk/matplotlib/agg24/include/agg_scanline_u.h
trunk/matplotlib/agg24/include/agg_shorten_path.h
trunk/matplotlib/agg24/include/agg_simul_eq.h
trunk/matplotlib/agg24/include/agg_span_allocator.h
trunk/matplotlib/agg24/include/agg_span_converter.h
trunk/matplotlib/agg24/include/agg_span_gouraud.h
trunk/matplotlib/agg24/include/agg_span_gouraud_gray.h
trunk/matplotlib/agg24/include/agg_span_gouraud_rgba.h
trunk/matplotlib/agg24/include/agg_span_gradient.h
trunk/matplotlib/agg24/include/agg_span_gradient_alpha.h
trunk/matplotlib/agg24/include/agg_span_image_filter.h
trunk/matplotlib/agg24/include/agg_span_image_filter_gray.h
trunk/matplotlib/agg24/include/agg_span_image_filter_rgb.h
trunk/matplotlib/agg24/include/agg_span_image_filter_rgba.h
trunk/matplotlib/agg24/include/agg_span_interpolator_adaptor.h
trunk/matplotlib/agg24/include/agg_span_interpolator_linear.h
trunk/matplotlib/agg24/include/agg_span_interpolator_persp.h
trunk/matplotlib/agg24/include/agg_span_interpolator_trans.h
trunk/matplotlib/agg24/include/agg_span_pattern_gray.h
trunk/matplotlib/agg24/include/agg_span_pattern_rgb.h
trunk/matplotlib/agg24/include/agg_span_pattern_rgba.h
trunk/matplotlib/agg24/include/agg_span_solid.h
trunk/matplotlib/agg24/include/agg_span_subdiv_adaptor.h
trunk/matplotlib/agg24/include/agg_trans_affine.h
trunk/matplotlib/agg24/include/agg_trans_bilinear.h
trunk/matplotlib/agg24/include/agg_trans_double_path.h
trunk/matplotlib/agg24/include/agg_trans_perspective.h
trunk/matplotlib/agg24/include/agg_trans_single_path.h
trunk/matplotlib/agg24/include/agg_trans_viewport.h
trunk/matplotlib/agg24/include/agg_trans_warp_magnifier.h
trunk/matplotlib/agg24/include/agg_vcgen_bspline.h
trunk/matplotlib/agg24/include/agg_vcgen_contour.h
trunk/matplotlib/agg24/include/agg_vcgen_dash.h
trunk/matplotlib/agg24/include/agg_vcgen_markers_term.h
trunk/matplotlib/agg24/include/agg_vcgen_smooth_poly1.h
trunk/matplotlib/agg24/include/agg_vcgen_stroke.h
trunk/matplotlib/agg24/include/agg_vcgen_vertex_sequence.h
trunk/matplotlib/agg24/include/agg_vertex_sequence.h
trunk/matplotlib/agg24/include/agg_vpgen_clip_polygon.h
trunk/matplotlib/agg24/include/agg_vpgen_clip_polyline.h
trunk/matplotlib/agg24/include/agg_vpgen_segmentator.h
trunk/matplotlib/agg24/include/ctrl/
trunk/matplotlib/agg24/include/ctrl/agg_bezier_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_cbox_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_gamma_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_gamma_spline.h
trunk/matplotlib/agg24/include/ctrl/agg_polygon_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_rbox_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_scale_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_slider_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_spline_ctrl.h
trunk/matplotlib/agg24/include/platform/
trunk/matplotlib/agg24/include/platform/agg_platform_support.h
trunk/matplotlib/agg24/include/platform/mac/
trunk/matplotlib/agg24/include/platform/mac/agg_mac_pmap.h
trunk/matplotlib/agg24/include/platform/win32/
trunk/matplotlib/agg24/include/platform/win32/agg_win32_bmp.h
trunk/matplotlib/agg24/include/util/
trunk/matplotlib/agg24/include/util/agg_color_conv.h
trunk/matplotlib/agg24/include/util/agg_color_conv_rgb16.h
trunk/matplotlib/agg24/include/util/agg_color_conv_rgb8.h
trunk/matplotlib/agg24/src/
trunk/matplotlib/agg24/src/ChangeLog
trunk/matplotlib/agg24/src/agg_arc.cpp
trunk/matplotlib/agg24/src/agg_arrowhead.cpp
trunk/matplotlib/agg24/src/agg_bezier_arc.cpp
trunk/matplotlib/agg24/src/agg_bspline.cpp
trunk/matplotlib/agg24/src/agg_curves.cpp
trunk/matplotlib/agg24/src/agg_embedded_raster_fonts.cpp
trunk/matplotlib/agg24/src/agg_gsv_text.cpp
trunk/matplotlib/agg24/src/agg_image_filters.cpp
trunk/matplotlib/agg24/src/agg_line_aa_basics.cpp
trunk/matplotlib/agg24/src/agg_line_profile_aa.cpp
trunk/matplotlib/agg24/src/agg_rounded_rect.cpp
trunk/matplotlib/agg24/src/agg_sqrt_tables.cpp
trunk/matplotlib/agg24/src/agg_trans_affine.cpp
trunk/matplotlib/agg24/src/agg_trans_double_path.cpp
trunk/matplotlib/agg24/src/agg_trans_single_path.cpp
trunk/matplotlib/agg24/src/agg_trans_warp_magnifier.cpp
trunk/matplotlib/agg24/src/agg_vcgen_bspline.cpp
trunk/matplotlib/agg24/src/agg_vcgen_contour.cpp
trunk/matplotlib/agg24/src/agg_vcgen_dash.cpp
trunk/matplotlib/agg24/src/agg_vcgen_markers_term.cpp
trunk/matplotlib/agg24/src/agg_vcgen_smooth_poly1.cpp
trunk/matplotlib/agg24/src/agg_vcgen_stroke.cpp
trunk/matplotlib/agg24/src/agg_vpgen_clip_polygon.cpp
trunk/matplotlib/agg24/src/agg_vpgen_clip_polyline.cpp
trunk/matplotlib/agg24/src/agg_vpgen_segmentator.cpp
trunk/matplotlib/agg24/src/authors
trunk/matplotlib/agg24/src/copying
trunk/matplotlib/agg24/src/ctrl/
trunk/matplotlib/agg24/src/ctrl/agg_bezier_ctrl.cpp
trunk/matplotlib/agg24/src/ctrl/agg_cbox_ctrl.cpp
trunk/matplotlib/agg24/src/ctrl/agg_gamma_ctrl.cpp
trunk/matplotlib/agg24/src/ctrl/agg_gamma_spline.cpp
trunk/matplotlib/agg24/src/ctrl/agg_polygon_ctrl.cpp
trunk/matplotlib/agg24/src/ctrl/agg_rbox_ctrl.cpp
trunk/matplotlib/agg24/src/ctrl/agg_scale_ctrl.cpp
trunk/matplotlib/agg24/src/ctrl/agg_slider_ctrl.cpp
trunk/matplotlib/agg24/src/ctrl/agg_spline_ctrl.cpp
trunk/matplotlib/agg24/src/platform/
trunk/matplotlib/agg24/src/platform/AmigaOS/
trunk/matplotlib/agg24/src/platform/AmigaOS/agg_platform_support.cpp
trunk/matplotlib/agg24/src/platform/BeOS/
trunk/matplotlib/agg24/src/platform/BeOS/agg_platform_support.cpp
trunk/matplotlib/agg24/src/platform/X11/
trunk/matplotlib/agg24/src/platform/X11/agg_platform_support.cpp
trunk/matplotlib/agg24/src/platform/mac/
trunk/matplotlib/agg24/src/platform/mac/agg_mac_pmap.cpp
trunk/matplotlib/agg24/src/platform/mac/agg_platform_support.cpp
trunk/matplotlib/agg24/src/platform/sdl/
trunk/matplotlib/agg24/src/platform/sdl/agg_platform_support.cpp
trunk/matplotlib/agg24/src/platform/win32/
trunk/matplotlib/agg24/src/platform/win32/agg_platform_support.cpp
trunk/matplotlib/agg24/src/platform/win32/agg_win32_bmp.cpp
trunk/matplotlib/doc/
trunk/matplotlib/doc/devel/
trunk/matplotlib/doc/devel/add_new_projection.rst
trunk/matplotlib/examples/auto_layout.py
trunk/matplotlib/examples/custom_projection_example.py
trunk/matplotlib/examples/custom_scale_example.py
trunk/matplotlib/examples/geo_demo.py
trunk/matplotlib/examples/simple_plot_fps.py
trunk/matplotlib/examples/symlog_demo.py
trunk/matplotlib/lib/matplotlib/backends/backend_mixed.py
trunk/matplotlib/lib/matplotlib/path.py
trunk/matplotlib/lib/matplotlib/scale.py
trunk/matplotlib/src/_path.cpp
trunk/matplotlib/src/agg_py_path_iterator.h
trunk/matplotlib/src/agg_py_transforms.h
Removed Paths:
-------------
trunk/matplotlib/agg23/
trunk/matplotlib/agg24/include/
trunk/matplotlib/agg24/include/agg_alpha_mask_u8.h
trunk/matplotlib/agg24/include/agg_arc.h
trunk/matplotlib/agg24/include/agg_array.h
trunk/matplotlib/agg24/include/agg_arrowhead.h
trunk/matplotlib/agg24/include/agg_basics.h
trunk/matplotlib/agg24/include/agg_bezier_arc.h
trunk/matplotlib/agg24/include/agg_bitset_iterator.h
trunk/matplotlib/agg24/include/agg_blur.h
trunk/matplotlib/agg24/include/agg_bounding_rect.h
trunk/matplotlib/agg24/include/agg_bspline.h
trunk/matplotlib/agg24/include/agg_clip_liang_barsky.h
trunk/matplotlib/agg24/include/agg_color_gray.h
trunk/matplotlib/agg24/include/agg_color_rgba.h
trunk/matplotlib/agg24/include/agg_config.h
trunk/matplotlib/agg24/include/agg_conv_adaptor_vcgen.h
trunk/matplotlib/agg24/include/agg_conv_adaptor_vpgen.h
trunk/matplotlib/agg24/include/agg_conv_bspline.h
trunk/matplotlib/agg24/include/agg_conv_clip_polygon.h
trunk/matplotlib/agg24/include/agg_conv_clip_polyline.h
trunk/matplotlib/agg24/include/agg_conv_close_polygon.h
trunk/matplotlib/agg24/include/agg_conv_concat.h
trunk/matplotlib/agg24/include/agg_conv_contour.h
trunk/matplotlib/agg24/include/agg_conv_curve.h
trunk/matplotlib/agg24/include/agg_conv_dash.h
trunk/matplotlib/agg24/include/agg_conv_gpc.h
trunk/matplotlib/agg24/include/agg_conv_marker.h
trunk/matplotlib/agg24/include/agg_conv_marker_adaptor.h
trunk/matplotlib/agg24/include/agg_conv_segmentator.h
trunk/matplotlib/agg24/include/agg_conv_shorten_path.h
trunk/matplotlib/agg24/include/agg_conv_smooth_poly1.h
trunk/matplotlib/agg24/include/agg_conv_stroke.h
trunk/matplotlib/agg24/include/agg_conv_transform.h
trunk/matplotlib/agg24/include/agg_conv_unclose_polygon.h
trunk/matplotlib/agg24/include/agg_curves.h
trunk/matplotlib/agg24/include/agg_dda_line.h
trunk/matplotlib/agg24/include/agg_ellipse.h
trunk/matplotlib/agg24/include/agg_ellipse_bresenham.h
trunk/matplotlib/agg24/include/agg_embedded_raster_fonts.h
trunk/matplotlib/agg24/include/agg_font_cache_manager.h
trunk/matplotlib/agg24/include/agg_gamma_functions.h
trunk/matplotlib/agg24/include/agg_gamma_lut.h
trunk/matplotlib/agg24/include/agg_glyph_raster_bin.h
trunk/matplotlib/agg24/include/agg_gradient_lut.h
trunk/matplotlib/agg24/include/agg_gsv_text.h
trunk/matplotlib/agg24/include/agg_image_accessors.h
trunk/matplotlib/agg24/include/agg_image_filters.h
trunk/matplotlib/agg24/include/agg_line_aa_basics.h
trunk/matplotlib/agg24/include/agg_math.h
trunk/matplotlib/agg24/include/agg_math_stroke.h
trunk/matplotlib/agg24/include/agg_path_length.h
trunk/matplotlib/agg24/include/agg_path_storage.h
trunk/matplotlib/agg24/include/agg_path_storage_integer.h
trunk/matplotlib/agg24/include/agg_pattern_filters_rgba.h
trunk/matplotlib/agg24/include/agg_pixfmt_amask_adaptor.h
trunk/matplotlib/agg24/include/agg_pixfmt_gray.h
trunk/matplotlib/agg24/include/agg_pixfmt_rgb.h
trunk/matplotlib/agg24/include/agg_pixfmt_rgb_packed.h
trunk/matplotlib/agg24/include/agg_pixfmt_rgba.h
trunk/matplotlib/agg24/include/agg_pixfmt_transposer.h
trunk/matplotlib/agg24/include/agg_rasterizer_cells_aa.h
trunk/matplotlib/agg24/include/agg_rasterizer_compound_aa.h
trunk/matplotlib/agg24/include/agg_rasterizer_outline.h
trunk/matplotlib/agg24/include/agg_rasterizer_outline_aa.h
trunk/matplotlib/agg24/include/agg_rasterizer_scanline_aa.h
trunk/matplotlib/agg24/include/agg_rasterizer_sl_clip.h
trunk/matplotlib/agg24/include/agg_renderer_base.h
trunk/matplotlib/agg24/include/agg_renderer_markers.h
trunk/matplotlib/agg24/include/agg_renderer_mclip.h
trunk/matplotlib/agg24/include/agg_renderer_outline_aa.h
trunk/matplotlib/agg24/include/agg_renderer_outline_image.h
trunk/matplotlib/agg24/include/agg_renderer_primitives.h
trunk/matplotlib/agg24/include/agg_renderer_raster_text.h
trunk/matplotlib/agg24/include/agg_renderer_scanline.h
trunk/matplotlib/agg24/include/agg_rendering_buffer.h
trunk/matplotlib/agg24/include/agg_rendering_buffer_dynarow.h
trunk/matplotlib/agg24/include/agg_rounded_rect.h
trunk/matplotlib/agg24/include/agg_scanline_bin.h
trunk/matplotlib/agg24/include/agg_scanline_boolean_algebra.h
trunk/matplotlib/agg24/include/agg_scanline_p.h
trunk/matplotlib/agg24/include/agg_scanline_storage_aa.h
trunk/matplotlib/agg24/include/agg_scanline_storage_bin.h
trunk/matplotlib/agg24/include/agg_scanline_u.h
trunk/matplotlib/agg24/include/agg_shorten_path.h
trunk/matplotlib/agg24/include/agg_simul_eq.h
trunk/matplotlib/agg24/include/agg_span_allocator.h
trunk/matplotlib/agg24/include/agg_span_converter.h
trunk/matplotlib/agg24/include/agg_span_gouraud.h
trunk/matplotlib/agg24/include/agg_span_gouraud_gray.h
trunk/matplotlib/agg24/include/agg_span_gouraud_rgba.h
trunk/matplotlib/agg24/include/agg_span_gradient.h
trunk/matplotlib/agg24/include/agg_span_gradient_alpha.h
trunk/matplotlib/agg24/include/agg_span_image_filter.h
trunk/matplotlib/agg24/include/agg_span_image_filter_gray.h
trunk/matplotlib/agg24/include/agg_span_image_filter_rgb.h
trunk/matplotlib/agg24/include/agg_span_image_filter_rgba.h
trunk/matplotlib/agg24/include/agg_span_interpolator_adaptor.h
trunk/matplotlib/agg24/include/agg_span_interpolator_linear.h
trunk/matplotlib/agg24/include/agg_span_interpolator_persp.h
trunk/matplotlib/agg24/include/agg_span_interpolator_trans.h
trunk/matplotlib/agg24/include/agg_span_pattern_gray.h
trunk/matplotlib/agg24/include/agg_span_pattern_rgb.h
trunk/matplotlib/agg24/include/agg_span_pattern_rgba.h
trunk/matplotlib/agg24/include/agg_span_solid.h
trunk/matplotlib/agg24/include/agg_span_subdiv_adaptor.h
trunk/matplotlib/agg24/include/agg_trans_affine.h
trunk/matplotlib/agg24/include/agg_trans_bilinear.h
trunk/matplotlib/agg24/include/agg_trans_double_path.h
trunk/matplotlib/agg24/include/agg_trans_perspective.h
trunk/matplotlib/agg24/include/agg_trans_single_path.h
trunk/matplotlib/agg24/include/agg_trans_viewport.h
trunk/matplotlib/agg24/include/agg_trans_warp_magnifier.h
trunk/matplotlib/agg24/include/agg_vcgen_bspline.h
trunk/matplotlib/agg24/include/agg_vcgen_contour.h
trunk/matplotlib/agg24/include/agg_vcgen_dash.h
trunk/matplotlib/agg24/include/agg_vcgen_markers_term.h
trunk/matplotlib/agg24/include/agg_vcgen_smooth_poly1.h
trunk/matplotlib/agg24/include/agg_vcgen_stroke.h
trunk/matplotlib/agg24/include/agg_vcgen_vertex_sequence.h
trunk/matplotlib/agg24/include/agg_vertex_sequence.h
trunk/matplotlib/agg24/include/agg_vpgen_clip_polygon.h
trunk/matplotlib/agg24/include/agg_vpgen_clip_polyline.h
trunk/matplotlib/agg24/include/agg_vpgen_segmentator.h
trunk/matplotlib/agg24/include/ctrl/
trunk/matplotlib/agg24/include/ctrl/agg_bezier_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_cbox_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_gamma_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_gamma_spline.h
trunk/matplotlib/agg24/include/ctrl/agg_polygon_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_rbox_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_scale_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_slider_ctrl.h
trunk/matplotlib/agg24/include/ctrl/agg_spline_ctrl.h
trunk/matplotlib/agg24/include/platform/
trunk/matplotlib/agg24/include/platform/agg_platform_support.h
trunk/matplotlib/agg24/include/platform/mac/
trunk/matplotlib/agg24/include/platform/mac/agg_mac_pmap.h
trunk/matplotlib/agg24/include/platform/win32/
trunk/matplotlib/agg24/include/platform/win32/agg_win...
[truncated message content] |
|
From: <md...@us...> - 2008-01-08 19:47:13
|
Revision: 4816
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4816&view=rev
Author: mdboom
Date: 2008-01-08 11:47:07 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Creatin maintenance branch for 0.91.x series.
Added Paths:
-----------
branches/v0_91_maint/
Copied: branches/v0_91_maint (from rev 4815, trunk/matplotlib)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-08 19:30:19
|
Revision: 4815
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4815&view=rev
Author: mdboom
Date: 2008-01-08 11:30:17 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Tagging release 0.91.2
Added Paths:
-----------
tags/v0_91_2/
Copied: tags/v0_91_2 (from rev 4802, trunk/matplotlib)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-08 19:00:35
|
Revision: 4814
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4814&view=rev
Author: mdboom
Date: 2008-01-08 11:00:25 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Fix typos. Remove redundant paragraph.
Modified Paths:
--------------
trunk/matplotlib/MIGRATION.txt
Modified: trunk/matplotlib/MIGRATION.txt
===================================================================
--- trunk/matplotlib/MIGRATION.txt 2008-01-08 18:58:39 UTC (rev 4813)
+++ trunk/matplotlib/MIGRATION.txt 2008-01-08 19:00:25 UTC (rev 4814)
@@ -5,8 +5,8 @@
"transforms branch" of matplotlib, in which he rewrote from the ground
up the transformation infrastructure in matplotlib, which many found
unintuitive and hard to extend. In addition to a cleaner code base,
-the refactoring allows you to define your own trasformations and
-projections (eg map projections) within matplotlib. He has merged his
+the refactoring allows you to define your own transformations and
+projections (e.g. map projections) within matplotlib. He has merged his
work into the HEAD of the svn trunk, and this will be the basis for
future matplotlib releases.
@@ -19,16 +19,8 @@
take the svn code used in the last stable release in the 0.91 series,
and made it a maintenance branch so we can still fix bugs and support
people who are not ready to migrate to the new transformation
-infrastructure but nonetheless need acccess to svn bug fixes.
+infrastructure but nonetheless need access to svn bug fixes.
-The experimental transforms refactoring changes have been merged into
-SVN trunk. While this version is passing all examples and unit tests,
-there may be changes that subtly break things that used to work, raise
-nasty exceptions or kill innocent puppies. To help move matplotlib
-forward, we encourage all users who are comfortable with the bleeding
-edge to use the trunk with their own plots and report any bugs to the
-mailing list.
-
Using the new code
==================
@@ -61,4 +53,4 @@
primarily an internal improvement, and the possible user-visible
changes it allows are yet to come.
-These changes are detailed in the API_CHANGES document
+These changes are detailed in the API_CHANGES document.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jd...@us...> - 2008-01-08 18:58:44
|
Revision: 4813
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4813&view=rev
Author: jdh2358
Date: 2008-01-08 10:58:39 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
fixed perrys typos
Modified Paths:
--------------
trunk/matplotlib/INSTALL
trunk/matplotlib/MIGRATION.txt
Modified: trunk/matplotlib/INSTALL
===================================================================
--- trunk/matplotlib/INSTALL 2008-01-08 18:58:26 UTC (rev 4812)
+++ trunk/matplotlib/INSTALL 2008-01-08 18:58:39 UTC (rev 4813)
@@ -30,9 +30,9 @@
you can set.
If you want to use a GUI backend, you will need either Tkinter,
- pygtk or wxpython installed on your system, from src or from a
+ pygtk , wxPython or Qt installed on your system, from src or from a
package manager including the devel packages. You can choose which
- backends to enable by setting the flags in setup.py, but the default
+ backends to enable by setting the flags in setup.cfg, but the default
is to automatically detect your installed GUIs and build support for
them. If you later find that you did not have a GUI toolkit like
pygtk installed when you built matplotlib, but now want it, you will
Modified: trunk/matplotlib/MIGRATION.txt
===================================================================
--- trunk/matplotlib/MIGRATION.txt 2008-01-08 18:58:26 UTC (rev 4812)
+++ trunk/matplotlib/MIGRATION.txt 2008-01-08 18:58:39 UTC (rev 4813)
@@ -1,9 +1,9 @@
Migrating to the new matplotlib codebase
========================================
-Michael Droettboom has spent the last several month working on the
+Michael Droettboom has spent the last several months working on the
"transforms branch" of matplotlib, in which he rewrote from the ground
-up the transformation infrastructure in matplotlib, whih many found
+up the transformation infrastructure in matplotlib, which many found
unintuitive and hard to extend. In addition to a cleaner code base,
the refactoring allows you to define your own trasformations and
projections (eg map projections) within matplotlib. He has merged his
@@ -13,10 +13,10 @@
If you are a svn user, we encourage you to continue using the trunk as
before, but with the understanding that you are now truly on the
bleeding edge. Michael has made sure all the examples still pass with
-the new code base, so for the vast majority of you, I except to see
+the new code base, so for the vast majority of you, I expect to see
few problems. But we need to get as many people as possible using the
new code base so we can find and fix the remaining problems. We have
-take the svn cde used in the last stable release in the 0.91 series,
+take the svn code used in the last stable release in the 0.91 series,
and made it a maintenance branch so we can still fix bugs and support
people who are not ready to migrate to the new transformation
infrastructure but nonetheless need acccess to svn bug fixes.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jd...@us...> - 2008-01-08 18:58:33
|
Revision: 4812
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4812&view=rev
Author: jdh2358
Date: 2008-01-08 10:58:26 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
fixed perrys typos
Modified Paths:
--------------
trunk/htdocs/API_CHANGES
trunk/htdocs/CHANGELOG
trunk/htdocs/INSTALL
trunk/htdocs/convert.py
trunk/htdocs/credits.html.template
trunk/htdocs/examples/coords_report.py
trunk/htdocs/examples/dashpointlabel.py
trunk/htdocs/examples/data_helper.py
trunk/htdocs/examples/figimage_demo.py
trunk/htdocs/examples/logo.py
trunk/htdocs/examples/mri_demo.py
trunk/htdocs/examples/poly_editor.py
trunk/htdocs/examples/text_themes.py
trunk/htdocs/goals.txt
trunk/htdocs/hthelpers.py
trunk/htdocs/installing.html.template
trunk/htdocs/license.html.template
trunk/htdocs/make.py
trunk/htdocs/matplotlib.axes.html.template
trunk/htdocs/matplotlib.backend_bases.html.template
trunk/htdocs/matplotlib.backends.backend_agg.html.template
trunk/htdocs/matplotlib.backends.backend_cairo.html.template
trunk/htdocs/matplotlib.backends.backend_gtk.html.template
trunk/htdocs/matplotlib.backends.backend_gtkagg.html.template
trunk/htdocs/matplotlib.backends.backend_gtkcairo.html.template
trunk/htdocs/matplotlib.backends.backend_ps.html.template
trunk/htdocs/matplotlib.backends.backend_qt.html.template
trunk/htdocs/matplotlib.backends.backend_qtagg.html.template
trunk/htdocs/matplotlib.backends.backend_svg.html.template
trunk/htdocs/matplotlib.backends.backend_tkagg.html.template
trunk/htdocs/matplotlib.backends.backend_wx.html.template
trunk/htdocs/matplotlib.backends.backend_wxagg.html.template
trunk/htdocs/matplotlib.cbook.html.template
trunk/htdocs/matplotlib.cm.html.template
trunk/htdocs/matplotlib.colors.html.template
trunk/htdocs/matplotlib.dates.html.template
trunk/htdocs/matplotlib.figure.html.template
trunk/htdocs/matplotlib.finance.html.template
trunk/htdocs/matplotlib.font_manager.html.template
trunk/htdocs/matplotlib.image.html.template
trunk/htdocs/matplotlib.legend.html.template
trunk/htdocs/matplotlib.lines.html.template
trunk/htdocs/matplotlib.mathtext.html
trunk/htdocs/matplotlib.mathtext.html.template
trunk/htdocs/matplotlib.mlab.html.template
trunk/htdocs/matplotlib.numerix.html.template
trunk/htdocs/matplotlib.patches.html.template
trunk/htdocs/matplotlib.pylab.html.template
trunk/htdocs/matplotlib.pyplot.html.template
trunk/htdocs/matplotlib.rcsetup.html.template
trunk/htdocs/matplotlib.table.html.template
trunk/htdocs/matplotlib.texmanager.html.template
trunk/htdocs/matplotlib.text.html.template
trunk/htdocs/matplotlib.toolkits.basemap.basemap.html.template
trunk/htdocs/matplotlib.units.html.template
trunk/htdocs/matplotlibrc
trunk/htdocs/whats_new.html.template
Modified: trunk/htdocs/API_CHANGES
===================================================================
--- trunk/htdocs/API_CHANGES 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/API_CHANGES 2008-01-08 18:58:26 UTC (rev 4812)
@@ -1,3 +1,20 @@
+0.91.2 Released
+
+ For csv2rec, checkrows=0 is the new default indicating all rows
+ will be checked for type inference
+
+ A warning is issued when an image is drawn on log-scaled
+ axes, since it will not log-scale the image data.
+
+ Moved rec2gtk to matplotlib.toolkits.gtktools
+
+ Moved rec2excel to matplotlib.toolkits.exceltools
+
+ Removed, dead/experimental ExampleInfo, Namespace and Importer
+ code from matplotlib/__init__.py
+
+0.91.1 Released
+
0.91.0 Released
Changed cbook.is_file_like to cbook.is_writable_file_like and
@@ -2,3 +19,3 @@
corrected behavior.
-
+
Added ax kwarg to pyplot.colorbar and Figure.colorbar so that
Modified: trunk/htdocs/CHANGELOG
===================================================================
--- trunk/htdocs/CHANGELOG 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/CHANGELOG 2008-01-08 18:58:26 UTC (rev 4812)
@@ -1,4 +1,53 @@
===============================================================
+2008-01-06 Released 0.91.2 at revision 4802
+
+2007-12-26 Reduce too-late use of matplotlib.use() to a warning
+ instead of an exception, for backwards compatibility - EF
+
+2007-12-25 Fix bug in errorbar, identified by Noriko Minakawa - EF
+
+2007-12-25 Changed masked array importing to work with the upcoming
+ numpy 1.05 (now the maskedarray branch) as well as with
+ earlier versions. - EF
+
+2007-12-16 rec2csv saves doubles without losing precision. Also, it
+ does not close filehandles passed in open. - JDH,ADS
+
+2007-12-13 Moved rec2gtk to matplotlib.toolkits.gtktools and rec2excel
+ to matplotlib.toolkits.exceltools - JDH
+
+2007-12-12 Support alpha-blended text in the Agg and Svg backends -
+ MGD
+
+2007-12-10 Fix SVG text rendering bug. - MGD
+
+2007-12-10 Increase accuracy of circle and ellipse drawing by using an
+ 8-piece bezier approximation, rather than a 4-piece one.
+ Fix PDF, SVG and Cairo backends so they can draw paths
+ (meaning ellipses as well). - MGD
+
+2007-12-07 Issue a warning when drawing an image on a non-linear axis. - MGD
+
+2007-12-06 let widgets.Cursor initialize to the lower x and y bounds
+ rather than 0,0, which can cause havoc for dates and other
+ transforms - DSD
+
+2007-12-06 updated references to mpl data directories for py2exe - DSD
+
+2007-12-06 fixed a bug in rcsetup, see bug 1845057 - DSD
+
+2007-12-05 Fix how fonts are cached to avoid loading the same one multiple times.
+ (This was a regression since 0.90 caused by the refactoring of
+ font_manager.py) - MGD
+
+2007-12-05 Support arbitrary rotation of usetex text in Agg backend. - MGD
+
+2007-12-04 Support '|' as a character in mathtext - MGD
+
+===============================================================
+2007-11-27 Released 0.91.1 at revision 4517
+
+===============================================================
2007-11-27 Released 0.91.0 at revision 4478
2007-11-13 All backends now support writing to a file-like object, not
@@ -6,8 +55,8 @@
object in place of a file path. - MGD
2007-11-13 Improved the default backend selection at build time:
- SVG -> Agg -> TkAgg -> WXAgg -> GTK -> GTKAgg. The last usable
- backend in this progression will be chosen in the default
+ SVG -> Agg -> TkAgg -> WXAgg -> GTK -> GTKAgg. The last usable
+ backend in this progression will be chosen in the default
config file. If a backend is defined in setup.cfg, that will
be the default backend - DSD
@@ -17,41 +66,41 @@
2007-11-12 Exposed all the build options in setup.cfg. These options are
read into a dict called "options" by setupext.py. Also, added
"-mpl" tags to the version strings for packages provided by
- matplotlib. Versions provided by mpl will be identified and
+ matplotlib. Versions provided by mpl will be identified and
updated on subsequent installs - DSD
2007-11-12 Added support for STIX fonts. A new rcParam,
- mathtext.fontset, can be used to choose between:
-
+ mathtext.fontset, can be used to choose between:
+
'cm':
- The TeX/LaTeX Computer Modern fonts
+ The TeX/LaTeX Computer Modern fonts
- 'stix':
+ 'stix':
The STIX fonts (see stixfonts.org)
- 'stixsans':
- The STIX fonts, using sans-serif glyphs by default
+ 'stixsans':
+ The STIX fonts, using sans-serif glyphs by default
- 'custom':
+ 'custom':
A generic Unicode font, in which case the mathtext font
must be specified using mathtext.bf, mathtext.it,
mathtext.sf etc.
-
+
Added a new example, stix_fonts_demo.py to show how to access
different fonts and unusual symbols.
-
+
- MGD
-2007-11-12 Options to disable building backend extension modules moved
+2007-11-12 Options to disable building backend extension modules moved
from setup.py to setup.cfg - DSD
2007-11-09 Applied Martin Teichmann's patch 1828813: a QPainter is used in
- paintEvent, which has to be destroyed using the method end(). If
- matplotlib raises an exception before the call to end - and it
- does if you feed it with bad data - this method end() is never
+ paintEvent, which has to be destroyed using the method end(). If
+ matplotlib raises an exception before the call to end - and it
+ does if you feed it with bad data - this method end() is never
called and Qt4 will start spitting error messages
-2007-11-09 Moved pyparsing back into matplotlib namespace. Don't use
+2007-11-09 Moved pyparsing back into matplotlib namespace. Don't use
system pyparsing, API is too variable from one release
to the next - DSD
Modified: trunk/htdocs/INSTALL
===================================================================
--- trunk/htdocs/INSTALL 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/INSTALL 2008-01-08 18:58:26 UTC (rev 4812)
@@ -1,42 +1,42 @@
+
INTRODUCTION
- matplotlib requires at a minimum python 2.2+, Numeric or numarray
- and freetype. To get the most out of matplotlib, you will want to
- build some of the optional GUI and image extensions, discussed
- below. Matplotlib is known to work on linux, unix, win32 and OS X
+ matplotlib requires at a minimum python 2.3, numpy, libpng and
+ freetype. To get the most out of matplotlib, you will want to build
+ some of the optional GUI and image extensions, discussed below.
+ Matplotlib is known to work on linux, unix, win32 and OS X
platforms.
There are two kinds of matplotlib backends: vector based and raster
- based. The vector based backends, SVG and PS, produce ASCII text
- output files *.svg and *.ps. The core raster based renderer is the
- http://antigrain.com (agg) backend. This is a high quality 2D
- library that supports fast antialiasing, alpha blending and much
- more. If you want to produce PNGs or GUI images that support all of
- matplotlib's features, you should compile matplotlib with agg
- support and use one of the GUI agg backends: GTKAgg, WXAgg, TkAgg or
- FLTKAgg.
+ based. The vector based backends, SVG, PDF and PS, produce ASCII
+ text output files *.svg, *.pdf and *.ps. The core raster based
+ renderer is the http://antigrain.com (agg) backend. This is a high
+ quality 2D library that supports fast antialiasing, alpha blending
+ and much more. If you want to produce PNGs or GUI images that
+ support all of matplotlib's features, you should compile matplotlib
+ with agg support and use one of the GUI agg backends: GTKAgg, WXAgg,
+ TkAgg or FLTKAgg.
COMPILING
- You will need to have recent versions of freetype (>= 2.1.7), libpng
- and zlib installed on your system. If you are using a package
- manager, also make sure the devel versions of these packages are
- also installed (eg freetype-devel).
+ You will need to have recent versions of freetype, libpng and zlib
+ installed on your system. If you are using a package manager, also
+ make sure the devel versions of these packages are also installed
+ (eg freetype-devel).
- The top of setup.py contains some flags controlling which backends
- will be built. If you want to use a GUI backend, you will need
- either Tkinter, pygtk or wxpython installed on your system, from src
- or from a package manager including the devel packages. You can
- choose which backends to enable by setting the flags in setup.py,
- but the 'auto' flags will work in most cases, as matplotlib tries to
- find a GUI and build the backend acccordingly. If you know you
- don't want a particular backend or extension, you can set that flag
- to False.
+ matplotlib ships with a setup.cfg.template which you can use to
+ customize the build process. Copy it to setup.cfg if you need to
+ customize something. See that files for details of the parameters
+ you can set.
- As discussed above, most users will want to set 'BUILD_AGG = 1' and
- one or more of the GUI backends to True. Exceptions to this are if
- you know you don't need a GUI (eg a web server) or you only want to
- produce vector graphics.
+ If you want to use a GUI backend, you will need either Tkinter,
+ pygtk , wxPython or Qt installed on your system, from src or from a
+ package manager including the devel packages. You can choose which
+ backends to enable by setting the flags in setup.cfg, but the default
+ is to automatically detect your installed GUIs and build support for
+ them. If you later find that you did not have a GUI toolkit like
+ pygtk installed when you built matplotlib, but now want it, you will
+ need to install the toolkit and rebuild matplotlib.
If you have installed prerequisites to nonstandard places and need
to inform matplotlib where they are, edit setupext.py an add the
@@ -45,41 +45,29 @@
/some/path/include/somheader.h, put /some/path in the basedir list
for your platform.
- matplotlib works with with Numeric or numarray. At compile time,
- setup.py will look for both packages and compile the appropriate
- extensions into matplotlib. At runtime, the correct extension code
- will be chosen based on your numerix setting in matplotlibrc. If
- you want to be able to use either Numeric or numarray efficiently
- with matplotlib, it is important that you have *both* present and in
- your PYTHONPATH when you compile matplotlib.
- Note that if you install matplotlib anywhere other than the default
- location, you will need to set the MATPLOTLIBDATA environment
- variable to point to the install base dir.
-
Once you have everything above set to your liking, just do the usual
thing
python setup.py build
python setup.py install
-
+
WINDOWS
If you don't already have python installed, you may want to consider
- using the enthought edition of python, which has (old) scipy, Numeric, and
+ using the enthought edition of python, which has scipy, numpy, and
wxpython, plus a lot of other goodies, preinstalled -
http://www.enthought.com/python . With the enthought edition of
python + matplotlib installer, the following backends should work
- out of the box: agg, wx, wxagg, tkagg, ps and svg.
+ out of the box: agg, wx, wxagg, tkagg, ps, pdf and svg.
For standard python installations, you will also need to install
- either numpy, Numeric or numarray in addition to the matplotlib installer.
- With a standard python + Numeric/numarray + matplotlib, the
- following backends should work on windows: agg, tkagg, ps, svg. If
- you want others, eg a wx, wxagg, gtk or gtkagg, you'll need to
- install the requisite GUI toolkits. This is fairly easy, as both
- wxpython and pygtk come with windows friendly installers. The
- latter includes an additional requirement of the GTK runtime.
+ either numpy, in addition to the matplotlib installer. On some
+ systems you will also need to download msvcp71.dll library, which
+ you can download from
+ http://www.dll-files.com/dllindex/dll-files.shtml?msvcp71 or other
+ sites. You will need to unzip the archive and drag the dll into
+ c:\windows\system32
All of the GUI backends run on windows, but TkAgg is probably the
best for interactive use from the standard python shell or ipython.
@@ -106,7 +94,7 @@
To build all the backends on a binary linux distro such as redhat,
you need to install a number of the devel libs (and whatever
dependencies they require), I suggest
-
+
matplotlib core: zlib, zlib-devel, libpng, libpng-devel,
freetype, freetype-devel, freetype-utils
@@ -117,24 +105,15 @@
DEBIAN
- Vittorio Palmisano <re...@em...> maintails the debian
- packages at http://mentors.debian.net
+ matplotlib is part of debian (and ubuntu) so you shoule be able to
+ apt-get install it.
-
- * add this lines to your /etc/apt/sources.list:
- deb http://anakonda.altervista.org/debian packages/
- deb-src http://anakonda.altervista.org/debian sources/
-
- * then run:
- # apt-get update
- # apt-get install python-matplotlib python-matplotlib-doc
-
FREEBSD
http://www.freshports.org/math/py-matplotlib/
Gentoo
-
+
http://www.gentoo-portage.com/dev-python/matplotlib
OS X
Modified: trunk/htdocs/convert.py
===================================================================
--- trunk/htdocs/convert.py 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/convert.py 2008-01-08 18:58:26 UTC (rev 4812)
@@ -18,18 +18,19 @@
return sh.getvalue()
class NewsBox:
- def __init__(self, body, title='News Flash'):
+ def __init__(self, body, title='News Flash', bgcolor='red'):
self.body = body
self.title = title
-
+ self.bgcolor = bgcolor
+
def format_header(self):
return """
- <tr><td bgcolor="red" align="left">
+ <tr><td bgcolor="%s" align="left">
<font class="tableheading">
<b>%s</b>
</font>
</td></tr>
- """%self.title
+ """%(self.bgcolor, self.title)
def __repr__(self):
s = '<table width=100% border=1 cellpadding=1 ' +\
@@ -186,20 +187,26 @@
# re-add news to the params dict 'tables' entry below for news
-news1 = NewsBox("""matplotlib <a
-href="http://sourceforge.net/project/showfiles.php?group_id=80706&package_id=82474">0.91.0</a>
+news1= NewsBox("""We have recetly merged significant changes in the internal matplotlib transformation infrastructure into the main matplotlib codebase. While this will not affect typical pylab users, some users of the API and transformation code will to make some code changes to work with the new transformations. Please see <a href=MIGRATION.txt>migration</a> and <a href=API_CHANGES>API_CHANGES</a> for a summary of the migration path and changes in the API, and let us know on the <a href=http://sourceforge.net/mail/?group_id=80706>mailing lists</a> if you are experiecing problems""", title='Major changes in matplotlib svn')
+
+
+news2 = NewsBox("""Help support matplotlib development by <a href=http://sourceforge.net/project/project_donations.php?group_id=80706>donating</a> to fund developer sprints and other matplotlib development costs.""", title='Donate')
+
+
+news3 = NewsBox("""matplotlib <a
+href=http://sourceforge.net/project/platformdownload.php?group_id=80706>0.91.2</a>
is out. See <a href=whats_new.html>what's new</a> for a summary of new features. """, title='New release')
table1 = LinkBox(header='Matplotlib', links=(
('Home', 'http://matplotlib.sourceforge.net'),
- #('Donate', 'donations.html'),
("What's New", 'whats_new.html'),
('Download', 'http://sourceforge.net/projects/matplotlib'),
('Installing', 'installing.html'),
('Screenshots', 'screenshots.html'),
('Examples (zip)', 'matplotlib_examples_%s.zip'%matplotlib.__version__),
('Mailing lists', 'http://sourceforge.net/mail/?group_id=80706'),
+ ('Donate', 'http://sourceforge.net/project/project_donations.php?group_id=80706'),
))
table2 = LinkBox(header='Documentation', links=(
@@ -225,7 +232,7 @@
params = {
'myemail' : '<a href=mailto:jdh...@ac...> (jdh...@ac...)</a>',
- 'tables' : (news1, table1, table2, table3),
+ 'tables' : (news1, news2, news3, table1, table2, table3),
'default_table' : 'border=1 cellpadding=3 cellspacing=2',
}
Modified: trunk/htdocs/credits.html.template
===================================================================
--- trunk/htdocs/credits.html.template 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/credits.html.template 2008-01-08 18:58:26 UTC (rev 4812)
@@ -78,9 +78,11 @@
<li>Fernando Perez has provided numerous bug reports and patches for
cleaning up backend imports and expanding pylab functionality, and
- provided matplotlib support in the pylab mode for <a
- href=http://ipython.scipy.org>ipython</a>. He also provided the <a
- href=matplotlib.pyplot.html#-matshow>matshow</a> command.</li>
+ provided matplotlib support in the pylab mode for
+ <a href=http://ipython.scipy.org>ipython</a>. He also provided
+ the <a href=matplotlib.pyplot.html#-matshow>matshow</a> command, and
+ wrote TConfig, which is the basis for the traited mpl
+ configuration. </li>
<li>Andrew Dalke of Dalke Scientific Software contributed the
strftime formatting code to handle years earlier than 1900</li>
@@ -96,7 +98,7 @@
shared axes support that underlies ganged plots and multiscale
plots</li>
- <li>Jeffrey Whittaker at
+ <li>Jeffrey Whitaker at
<a href=http://www.boulder.noaa.gov/>NOAA</a> wrote
the <a href=toolkits.html>basemap</a> tookit</li>
@@ -104,6 +106,8 @@
<a href=http://www.jpl.nasa.gov>JPL</a> collaborated on the QtAgg
backend</li>
+ <li>James Amundson did the initial work porting the qt backend to qt4</li>
+
<li>Eric Firing has contributed significantly to contouring, masked
array, pcolor, image and quiver support, in addition to ongoing
support and enhancements in performance, design and code quality in
@@ -127,6 +131,10 @@
<li>Jouni K. Seppaenen wrote the PDF backend</li>
+ <li> Paul Kienzle improved the picking infrastruture for interactive plots,
+ and with Alex Mont contributed fast rendering code for quadrilateral
+ meshes.</li>
+
<li>Michael Droettboom supported by
<a href=http://www.stsci.edu/>STScI</a> wrote the enhanced mathtext
support, implementing Knuth's box layout algorithms, saving to
Modified: trunk/htdocs/examples/coords_report.py
===================================================================
--- trunk/htdocs/examples/coords_report.py 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/examples/coords_report.py 2008-01-08 18:58:26 UTC (rev 4812)
@@ -1,7 +1,6 @@
#!/usr/bin/env python
-# override the default reporting of coords (coords reporting not
-# implemented yet on wx*)
+# override the default reporting of coords
from pylab import *
Modified: trunk/htdocs/examples/dashpointlabel.py
===================================================================
--- trunk/htdocs/examples/dashpointlabel.py 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/examples/dashpointlabel.py 2008-01-08 18:58:26 UTC (rev 4812)
@@ -1,4 +1,4 @@
-from matplotlib import pylab
+import pylab
DATA = ((1, 3),
(2, 4),
@@ -15,26 +15,27 @@
(1, 20, 30, 60, 10),
)
-def test_dashpointlabel(save=False):
- pylab.clf()
- (x,y) = zip(*DATA)
- pylab.plot(x, y, marker='o')
- for i in xrange(len(DATA)):
- (x,y) = DATA[i]
- (dd, dl, r, dr, dp) = dash_style[i]
- pylab.text(x, y, str((x,y)), withdash=True,
- dashdirection=dd,
- dashlength=dl,
- rotation=r,
- dashrotation=dr,
- dashpush=dp,
- )
- axis = pylab.gca()
- axis.set_xlim((0.0, 5.0))
- axis.set_ylim((0.0, 5.0))
- if save:
- pylab.savefig('dashpointlabel')
- pylab.show()
+fig = pylab.figure()
+ax = fig.add_subplot(111)
-if __name__ == '__main__':
- test_dashpointlabel()
+
+(x,y) = zip(*DATA)
+ax.plot(x, y, marker='o')
+for i in xrange(len(DATA)):
+ (x,y) = DATA[i]
+ (dd, dl, r, dr, dp) = dash_style[i]
+ #print 'dashlen call', dl
+ t = ax.text(x, y, str((x,y)), withdash=True,
+ dashdirection=dd,
+ dashlength=dl,
+ rotation=r,
+ dashrotation=dr,
+ dashpush=dp,
+ )
+
+ax.set_xlim((0.0, 5.0))
+ax.set_ylim((0.0, 5.0))
+#if save:
+# pylab.savefig('dashpointlabel')
+pylab.show()
+
Modified: trunk/htdocs/examples/data_helper.py
===================================================================
--- trunk/htdocs/examples/data_helper.py 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/examples/data_helper.py 2008-01-08 18:58:26 UTC (rev 4812)
@@ -15,7 +15,7 @@
M1 = resize(M1, (M1.shape[0]/2,2) )
M2 = fromstring( file('data/%s.dat' % ticker2, 'rb').read(), '<d')
- M2 = resize(M1, (M2.shape[0]/2,2) )
+ M2 = resize(M2, (M2.shape[0]/2,2) )
d1, p1 = M1[:,0], M1[:,1]
d2, p2 = M2[:,0], M2[:,1]
Modified: trunk/htdocs/examples/figimage_demo.py
===================================================================
--- trunk/htdocs/examples/figimage_demo.py 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/examples/figimage_demo.py 2008-01-08 18:58:26 UTC (rev 4812)
@@ -13,7 +13,7 @@
im1 = figimage(Z, xo=50, yo=0)
im2 = figimage(Z, xo=100, yo=100, alpha=.8)
#gray() # overrides current and sets default
-#savefig('figimage_demo')
+savefig('figimage_demo')
show()
Modified: trunk/htdocs/examples/logo.py
===================================================================
--- trunk/htdocs/examples/logo.py 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/examples/logo.py 2008-01-08 18:58:26 UTC (rev 4812)
@@ -5,7 +5,7 @@
# convert data to mV
x = 1000*0.1*fromstring(
- file('data/membrane.dat', 'rb').read(), Float32)
+ file('data/membrane.dat', 'rb').read(), float32)
# 0.0005 is the sample interval
t = 0.0005*arange(len(x))
figure(1, figsize=(7,1), dpi=100)
Modified: trunk/htdocs/examples/mri_demo.py
===================================================================
--- trunk/htdocs/examples/mri_demo.py 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/examples/mri_demo.py 2008-01-08 18:58:26 UTC (rev 4812)
@@ -3,7 +3,7 @@
# data are 256x256 16 bit integers
dfile = 'data/s1045.ima'
-im = fromstring(file(dfile, 'rb').read(), UInt16).astype(Float)
+im = fromstring(file(dfile, 'rb').read(), uint16).astype(float)
im.shape = 256, 256
#imshow(im, ColormapJet(256))
Modified: trunk/htdocs/examples/poly_editor.py
===================================================================
--- trunk/htdocs/examples/poly_editor.py 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/examples/poly_editor.py 2008-01-08 18:58:26 UTC (rev 4812)
@@ -9,8 +9,6 @@
from matplotlib.mlab import dist_point_to_segment
-
-
class PolygonInteractor:
"""
An polygon editor.
@@ -73,7 +71,7 @@
# display coords
xt, yt = self.poly.get_transform().numerix_x_y(x, y)
d = sqrt((xt-event.x)**2 + (yt-event.y)**2)
- indseq = nonzero(equal(d, amin(d)))
+ indseq = nonzero(equal(d, amin(d)))[0]
ind = indseq[0]
if d[ind]>=self.epsilon:
@@ -128,6 +126,7 @@
if event.inaxes is None: return
if event.button != 1: return
x,y = event.xdata, event.ydata
+
self.poly.xy[self._ind] = x,y
self.line.set_data(zip(*self.poly.xy))
@@ -160,7 +159,7 @@
ax.add_patch(poly)
p = PolygonInteractor( ax, poly)
-ax.add_line(p.line)
+#ax.add_line(p.line)
ax.set_title('Click and drag a point to move it')
ax.set_xlim((-2,2))
ax.set_ylim((-2,2))
Modified: trunk/htdocs/examples/text_themes.py
===================================================================
--- trunk/htdocs/examples/text_themes.py 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/examples/text_themes.py 2008-01-08 18:58:26 UTC (rev 4812)
@@ -17,7 +17,7 @@
plot(t1, f(t1), 'bo', t2, f(t2), 'k')
title('Damped exponential decay', font, size='large', color='r')
-text(2, 0.65, 'cos(2 pi t) exp(-t)', font, color='k', family='monospace' )
+text(2, 0.65, r'$\cos(2 \pi t) \exp(-t)$', color='k')
xlabel('time (s)', font, style='italic')
ylabel('voltage (mV)', font)
Modified: trunk/htdocs/goals.txt
===================================================================
--- trunk/htdocs/goals.txt 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/goals.txt 2008-01-08 18:58:26 UTC (rev 4812)
@@ -423,11 +423,11 @@
*******************
PDF backend
-not started
+mostly complete
*******************
SVG backend
-almost done
+mostly complete
Jared Wahlstrand wrote the SVG backend. As of <a
href="whats_new.html#0.61-svg_fixes">matplotlib-0.91</a> svg has fast
Modified: trunk/htdocs/hthelpers.py
===================================================================
--- trunk/htdocs/hthelpers.py 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/hthelpers.py 2008-01-08 18:58:26 UTC (rev 4812)
@@ -8,13 +8,10 @@
'matplotlib.backends.backend_cairo',
'matplotlib.backends.backend_fltkagg',
'matplotlib.backends.backend_gtkcairo',
- 'matplotlib.backends.backend_gd',
'matplotlib.backends.backend_gtk',
'matplotlib.backends.backend_gtkagg',
- 'matplotlib.backends.backend_paint',
'matplotlib.backends.backend_ps',
'matplotlib.backends.backend_svg',
- 'matplotlib.backends.backend_emf',
'matplotlib.backends.backend_template',
'matplotlib.backends.backend_tkagg',
'matplotlib.backends.backend_qt',
Modified: trunk/htdocs/installing.html.template
===================================================================
--- trunk/htdocs/installing.html.template 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/installing.html.template 2008-01-08 18:58:26 UTC (rev 4812)
@@ -31,10 +31,27 @@
make sure the devel versions of these packages are also installed (eg
freetype-devel).<p>
-matplotlib ships with a site.cfg.template file which you should copy
-to site.cfg and edit if you want to configure the build process, such
-as which user interfaces to build.
+ matplotlib ships with a setup.cfg.template which you can use to
+ customize the build process. Copy it to setup.cfg if you need to
+ customize something. See that files for details of the parameters
+ you can set.<p>
+ If you want to use a GUI backend, you will need either Tkinter,
+ pygtk , wxPython or Qt installed on your system, from src or from a
+ package manager including the devel packages. You can choose which
+ backends to enable by setting the flags in setup.cfg, but the default
+ is to automatically detect your installed GUIs and build support for
+ them. If you later find that you did not have a GUI toolkit like
+ pygtk installed when you built matplotlib, but now want it, you will
+ need to install the toolkit and rebuild matplotlib.<p>
+
+ If you have installed prerequisites to nonstandard places and need
+ to inform matplotlib where they are, edit setupext.py an add the
+ base dirs to the 'basedir' dictionary entry for your sys.platform.
+ Eg, if the header to some required library is in
+ /some/path/include/somheader.h, put /some/path in the basedir list
+ for your platform.<p>
+
<pre>
python setup.py build
python setup.py install
@@ -50,18 +67,22 @@
wxpython, plus a lot of other goodies, preinstalled -
<a href=http://www.enthought.com/python> enthought python</a> . With
the enthought edition of python + matplotlib installer, the following
-backends should work out of the box: agg, wx, wxagg, tkagg, ps and
-svg.<p>
+backends should work out of the box: agg, wx, wxagg, tkagg, ps, pdf
+and svg.<p>
For standard python installations, you will also need to install numpy
-in addition to the matplotlib installer. With a standard python +
-numpy + matplotlib, the following backends should work on windows:
-agg, tkagg, ps, svg. If you want others, eg a wx, wxagg, gtk or
-gtkagg, you'll need to install the requisite GUI toolkits, as
-described on <a href=backends.html>backends</a>. This is fairly easy,
-as both wxpython and pygtk come with windows friendly installers. The
-latter includes an additional requirement of the GTK runtime.<p>
+in addition to the matplotlib installer. On some systems, you will
+also need to download
+<a href=http://www.dll-files.com/dllindex/dll-files.shtml?msvcp71>msvcp71.dll</a>
+library. You will need to unzip the archive and drag the dll into
+c:\windows\system32
+
+With a standard python + numpy + matplotlib, the following backends
+should work on windows: agg, tkagg, ps, pdf, an svg. If you want
+others, eg a wx, wxagg, gtk or gtkagg, you'll need to install the
+requisite GUI toolkits, such as wxPython.
+
All of the GUI backends run on windows, but TkAgg is probably the best
for interactive use from the standard python shell or ipython. The
windows installer (*.exe or *.egg) on the download page contains all the code
@@ -83,14 +104,18 @@
<h3><a name=osx>OS X</a></h3>
-All of the backends run on OS X. Chris Barker has built a binary
-package (fink users see below) for matplotlib which is hosted on <a
-href=http://pythonmac.org/packages>pythonmac</a>, and works with Agg,
-Wx and Tk.
+All of the backends run on OS X. We build universal binary eggs for
+OS X that should work on Tiger (10.4) and Leopard (10.5) for both
+intel and PPC architectures, which you can grab
+<a href=http://sourceforge.net/project/platformdownload.php?group_id=80706>here</a>.
+If you are interested in building your own binaries, you can read the
+build notes
+<a href=http://ipython.scipy.org/moin/MatplotlibOSXBuildNotes>here</a>.
+If you want to build from svn yourself on OS X, make sure you read the
+compiling instructions above. There is a wiki page that covers build
+matplotlib (and other scientific python packages) from svn at
+<a href=http://ipython.scipy.org/moin/Py4Science/InstallationOSX>InstallationOSX</a> <p>
-If you want to compile yourself on OS X, make sure you read the
-compiling instructions above. There is a wiki page that covers build matplotlib (and other scientific python packages) from svn at <a href=http://ipython.scipy.org/moin/Py4Science/InstallationOSX>InstallationOSX</a> <p>
-
Note when running a GUI backend in OSX, you should launch your
programs with pythonw rather than python, or you may get
nonresponsive GUIs.
Modified: trunk/htdocs/license.html.template
===================================================================
--- trunk/htdocs/license.html.template 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/license.html.template 2008-01-08 18:58:26 UTC (rev 4812)
@@ -6,7 +6,7 @@
<pre>
-LICENSE AGREEMENT FOR MATPLOTLIB 0.91.0
+LICENSE AGREEMENT FOR MATPLOTLIB 0.91.2svn
--------------------------------------
1. This LICENSE AGREEMENT is between the John D. Hunter ("JDH"), and the
@@ -17,30 +17,30 @@
2. Subject to the terms and conditions of this License Agreement, JDH
hereby grants Licensee a nonexclusive, royalty-free, world-wide license
to reproduce, analyze, test, perform and/or display publicly, prepare
-derivative works, distribute, and otherwise use matplotlib 0.91.0
+derivative works, distribute, and otherwise use matplotlib 0.91.2svn
alone or in any derivative version, provided, however, that JDH's
License Agreement and JDH's notice of copyright, i.e., "Copyright (c)
2002-2004 John D. Hunter; All Rights Reserved" are retained in
-matplotlib 0.91.0 alone or in any derivative version prepared by
+matplotlib 0.91.2svn alone or in any derivative version prepared by
Licensee.
3. In the event Licensee prepares a derivative work that is based on or
-incorporates matplotlib 0.91.0 or any part thereof, and wants to
+incorporates matplotlib 0.91.2svn or any part thereof, and wants to
make the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
-the changes made to matplotlib 0.91.0.
+the changes made to matplotlib 0.91.2svn.
-4. JDH is making matplotlib 0.91.0 available to Licensee on an "AS
+4. JDH is making matplotlib 0.91.2svn available to Licensee on an "AS
IS" basis. JDH MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, JDH MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
-FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF MATPLOTLIB 0.91.0
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF MATPLOTLIB 0.91.2svn
WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
5. JDH SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF MATPLOTLIB
-0.91.0 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR
+0.91.2svn FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR
LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING
-MATPLOTLIB 0.91.0, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF
+MATPLOTLIB 0.91.2svn, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF
THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
@@ -52,7 +52,7 @@
trademarks or trade name in a trademark sense to endorse or promote
products or services of Licensee, or any third party.
-8. By copying, installing or otherwise using matplotlib 0.91.0,
+8. By copying, installing or otherwise using matplotlib 0.91.2svn,
Licensee agrees to be bound by the terms and conditions of this License
Agreement.
Modified: trunk/htdocs/make.py
===================================================================
--- trunk/htdocs/make.py 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/make.py 2008-01-08 18:58:26 UTC (rev 4812)
@@ -36,7 +36,7 @@
os.system('cp ../users_guide/users_guide.pdf users_guide_%s.pdf'%matplotlib.__version__)
-filenames = ( 'INSTALL', 'CHANGELOG', 'API_CHANGES',)
+filenames = ( 'INSTALL', 'CHANGELOG', 'API_CHANGES', 'MIGRATION.txt')
for fname in filenames:
oldname = os.path.join(MPL_SRC,fname)
print 'copying %s to %s' % (oldname, fname)
@@ -56,13 +56,13 @@
#os.system('cd tut; python runall.py')
#print 'Running process_docs'
-#os.system('python process_docs.py')
+os.system('python process_docs.py')
print 'Running convert'
os.system('python convert.py')
print 'Building archive'
version = matplotlib.__version__
-tarcommand = 'tar cfz site.tar.gz *.html api.pdf users_guide_%(version)s.pdf matplotlib_examples_%(version)s.zip screenshots tut examples gd matplotlibrc CHANGELOG NUMARRAY_ISSUES API_CHANGES set_begone.py -X exclude.txt'%locals()
+tarcommand = 'tar cfz site.tar.gz *.html api.pdf users_guide_%(version)s.pdf matplotlib_examples_%(version)s.zip screenshots tut examples matplotlibrc CHANGELOG API_CHANGES MIGRATION.txt set_begone.py -X exclude.txt'%locals()
print tarcommand
os.system(tarcommand)
Modified: trunk/htdocs/matplotlib.axes.html.template
===================================================================
--- trunk/htdocs/matplotlib.axes.html.template 2008-01-08 18:57:23 UTC (rev 4811)
+++ trunk/htdocs/matplotlib.axes.html.template 2008-01-08 18:58:26 UTC (rev 4812)
@@ -193,6 +193,7 @@
'axes pixels' : pixels from lower left corner of axes<br>
'axes fraction' : 0,1 is lower left of axes and 1,1 is upper right<br>
'data' : use the coordinate system of the object being annotated (default)<br>
+ 'offset points' : Specify an offset (in points) from the xy value<br>
'polar' : you can specify theta, r for the annotation, even<br>
in cartesian plots. Note that if you<br>
are using a polar axes, you do not need<br>
@@ -752,7 +753,7 @@
<dl><dt><a name="Axes-clear"><strong>clear</strong></a>(self)</dt><dd><tt>clear the axes</tt></dd></dl>
-<dl><dt><a name="Axes-cohere"><strong>cohere</strong></a>(self, x, y, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x860b3e4></font>, window<font color="#909090">=<function window_hanning at 0x860b294></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>COHERE(x, y, NFFT=256, Fs=2, Fc=0, detrend = mlab.detrend_none,<br>
+<dl><dt><a name="Axes-cohere"><strong>cohere</strong></a>(self, x, y, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x868817c></font>, window<font color="#909090">=<function window_hanning at 0x868802c></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>COHERE(x, y, NFFT=256, Fs=2, Fc=0, detrend = mlab.detrend_none,<br>
window = mlab.window_hanning, noverlap=0, **kwargs)<br>
<br>
cohere the coherence between x and y. Coherence is the normalized<br>
@@ -1045,7 +1046,7 @@
removed. Chunking introduces artifacts at the chunk<br>
boundaries unless antialiased = False</tt></dd></dl>
-<dl><dt><a name="Axes-csd"><strong>csd</strong></a>(self, x, y, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x860b3e4></font>, window<font color="#909090">=<function window_hanning at 0x860b294></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>CSD(x, y, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,<br>
+<dl><dt><a name="Axes-csd"><strong>csd</strong></a>(self, x, y, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x868817c></font>, window<font color="#909090">=<function window_hanning at 0x868802c></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>CSD(x, y, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,<br>
window=window_hanning, noverlap=0, **kwargs)<br>
<br>
The cross spectral density Pxy by Welches average periodogram method.<br>
@@ -2195,7 +2196,7 @@
See dates for helper functions date2num, num2date<br>
and drange for help on creating the required floating point dates</tt></dd></dl>
-<dl><dt><a name="Axes-psd"><strong>psd</strong></a>(self, x, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x860b3e4></font>, window<font color="#909090">=<function window_hanning at 0x860b294></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>PSD(x, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,<br>
+<dl><dt><a name="Axes-psd"><strong>psd</strong></a>(self, x, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x868817c></font>, window<font color="#909090">=<function window_hanning at 0x868802c></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>PSD(x, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,<br>
window=mlab.window_hanning, noverlap=0, **kwargs)<br>
<br>
The power spectral density by Welches average periodogram method. The<br>
@@ -3010,7 +3011,7 @@
axforeign.callbacks cbook.CallbackRegistry instances are<br>
returned in case you want to disconnect the coupling</tt></dd></dl>
-<dl><dt><a name="Axes-specgram"><strong>specgram</strong></a>(self, x, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x860b3e4></font>, window<font color="#909090">=<function window_hanning at 0x860b294></font>, noverlap<font color="#909090">=128</font>, cmap<font color="#909090">=None</font>, xextent<font color="#909090">=None</font>)</dt><dd><tt>SPECGRAM(x, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,<br>
+<dl><dt><a name="Axes-specgram"><strong>specgram</strong></a>(self, x, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x868817c></font>, window<font color="#909090">=<function window_hanning at 0x868802c></font>, noverlap<font color="#909090">=128</font>, cmap<font color="#909090">=None</font>, xextent<font color="#909090">=None</font>)</dt><dd><tt>SPECGRAM(x, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,<br>
window = mlab.window_hanning, noverlap=128,<br>
cmap=None, xextent=None)<br>
<br>
@@ -3297,7 +3298,7 @@
<dl><dt><a name="Axes-xaxis_inverted"><strong>xaxis_inverted</strong></a>(self)</dt><dd><tt>Returns True if the x-axis is inverted.</tt></dd></dl>
-<dl><dt><a name="Axes-xcorr"><strong>xcorr</strong></a>(self, x, y, normed<font color="#909090">=False</font>, detrend<font color="#909090">=<function detrend_none at 0x860b3e4></font>, usevlines<font color="#909090">=False</font>, maxlags<font color="#909090">=None</font>, **kwargs)</dt><dd><tt>XCORR(x, y, normed=False, detrend=mlab.detrend_none, usevlines=False, **kwargs):<br>
+<dl><dt><a name="Axes-xcorr"><strong>xcorr</strong></a>(self, x, y, normed<font color="#909090">=False</font>, detrend<font color="#909090">=<function detrend_none at 0x868817c></font>, usevlines<font color="#909090">=False</font>, maxlags<font color="#909090">=None</font>, **kwargs)</dt><dd><tt>XCORR(x, y, normed=False, detrend=mlab.detrend_none, usevlines=False, **kwargs):<br>
<br>
Plot the cross correlation between x and y. If normed=True,<br>
normalize the data but the cross correlation at 0-th lag. x<br>
@@ -3760,6 +3761,7 @@
'axes pixels' : pixels from lower left corner of axes<br>
'axes fraction' : 0,1 is lower left of axes and 1,1 is upper right<br>
'data' : use the coordinate system of the object being annotated (default)<br>
+ 'offset points' : Specify an offset (in points) from the xy value<br>
'polar' : you can specify theta, r for the annotation, even<br>
in cartesian plots. Note that if you<br>
are using a polar axes, you do not need<br>
@@ -4312,7 +4314,7 @@
<dl><dt><a name="PolarAxes-clear"><strong>clear</strong></a>(self)</dt><dd><tt>clear the axes</tt></dd></dl>
-<dl><dt><a name="PolarAxes-cohere"><strong>cohere</strong></a>(self, x, y, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x860b3e4></font>, window<font color="#909090">=<function window_hanning at 0x860b294></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>COHERE(x, y, NFFT=256, Fs=2, Fc=0, detrend = mlab.detrend_none,<br>
+<dl><dt><a name="PolarAxes-cohere"><strong>cohere</strong></a>(self, x, y, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x868817c></font>, window<font color="#909090">=<function window_hanning at 0x868802c></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>COHERE(x, y, NFFT=256, Fs=2, Fc=0, detrend = mlab.detrend_none,<br>
window = mlab.window_hanning, noverlap=0, **kwargs)<br>
<br>
cohere the coherence between x and y. Coherence is the normalized<br>
@@ -4601,7 +4603,7 @@
removed. Chunking introduces artifacts at the chunk<br>
boundaries unless antialiased = False</tt></dd></dl>
-<dl><dt><a name="PolarAxes-csd"><strong>csd</strong></a>(self, x, y, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x860b3e4></font>, window<font color="#909090">=<function window_hanning at 0x860b294></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>CSD(x, y, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,<br>
+<dl><dt><a name="PolarAxes-csd"><strong>csd</strong></a>(self, x, y, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x868817c></font>, window<font color="#909090">=<function window_hanning at 0x868802c></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>CSD(x, y, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,<br>
window=window_hanning, noverlap=0, **kwargs)<br>
<br>
The cross spectral density Pxy by Welches average periodogram method.<br>
@@ -5690,7 +5692,7 @@
See dates for helper functions date2num, num2date<br>
and drange for help on creating the required floating point dates</tt></dd></dl>
-<dl><dt><a name="PolarAxes-psd"><strong>psd</strong></a>(self, x, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x860b3e4></font>, window<font color="#909090">=<function window_hanning at 0x860b294></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>PSD(x, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,<br>
+<dl><dt><a name="PolarAxes-psd"><strong>psd</strong></a>(self, x, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x868817c></font>, window<font color="#909090">=<function window_hanning at 0x868802c></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>PSD(x, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,<br>
window=mlab.window_hanning, noverlap=0, **kwargs)<br>
<br>
The power spectral density by Welches average periodogram method. The<br>
@@ -6382,7 +6384,7 @@
axforeign.callbacks cbook.CallbackRegistry instances are<br>
returned in case you want to disconnect the coupling</tt></dd></dl>
-<dl><dt><a name="PolarAxes-specgram"><strong>specgram</strong></a>(self, x, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x860b3e4></font>, window<font color="#909090">=<function window_hanning at 0x860b294></font>, noverlap<font color="#909090">=128</font>, cmap<font color="#909090">=None</font>, xextent<font color="#909090">=None</font>)</dt><dd><tt>SPECGRAM(x, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,<br>
+<dl><dt><a name="PolarAxes-specgram"><strong>specgram</strong></a>(self, x, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x868817c></font>, window<font color="#909090">=<function window_hanning at 0x868802c></font>, noverlap<font color="#909090">=128</font>, cmap<font color="#909090">=None</font>, xextent<font color="#909090">=None</font>)</dt><dd><tt>SPECGRAM(x, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,<br>
window = mlab.window_hanning, noverlap=128,<br>
cmap=None, xextent=None)<br>
<br>
@@ -6638,7 +6640,7 @@
<dl><dt><a name="PolarAxes-xaxis_inverted"><strong>xaxis_inverted</strong></a>(self)</dt><dd><tt>Returns True if the x-axis is inverted.</tt></dd></dl>
-<dl><dt><a name="PolarAxes-xcorr"><strong>xcorr</strong></a>(self, x, y, normed<font color="#909090">=False</font>, detrend<font color="#909090">=<function detrend_none at 0x860b3e4></font>, usevlines<font color="#909090">=False</font>, maxlags<font color="#909090">=None</font>, **kwargs)</dt><dd><tt>XCORR(x, y, normed=False, detrend=mlab.detrend_none, usevlines=False, **kwargs):<br>
+<dl><dt><a name="PolarAxes-xcorr"><strong>xcorr</strong></a>(self, x, y, normed<font color="#909090">=False</font>, detrend<font color="#909090">=<function detrend_none at 0x868817c></font>, usevlines<font color="#909090">=False</font>, maxlags<font color="#909090">=None</font>, **kwargs)</dt><dd><tt>XCORR(x, y, normed=False, detrend=mlab.detrend_none, usevlines=False, **kwargs):<br>
<br>
Plot the cross correlation between x and y. If normed=True,<br>
normalize the data but the cross correlation at 0-th lag. x<br>
@@ -6844,17 +6846,10 @@
<font color="#000000" face="helvetica, arial"><a name="PolarSubplot">class <strong>PolarSubplot</strong></a>(<a href="matplotlib.axes.html#SubplotBase">SubplotBase</a>, <a href="matplotlib.axes.html#PolarAxes">PolarAxes</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
-<td colspan=2><tt>Create a polar subplot with<br>
+<td colspan=2><tt>subplot class for Polar <a href="#Axes">Axes</a><br>
<br>
- <a href="#PolarSubplot">PolarSubplot</a>(numRows, numCols, plotNum)<br>
- <br>
-where plotNum=1 is the first plot number and increasing plotNums<br>
-fill rows first. max(plotNum)==numRows*numCols<br>
- <br>
-You can leave out the commas if numRows<=numCols<=plotNum<10, as<br>
-in<br>
- <br>
- <a href="#Subplot">Subplot</a>(211) # 2 rows, 1 column, first (upper) plot<br> </tt></td></tr>
+This is not normally instantiated by the user; instead,<br>
+use the Figure.add_subplot(..., polar=True) method.<br> </tt></td></tr>
<tr><td> </td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="matplotlib.axes.html#PolarSubplot">PolarSubplot</a></dd>
@@ -7121,6 +7116,7 @@
'axes pixels' : pixels from lower left corner of axes<br>
'axes fraction' : 0,1 is lower left of axes and 1,1 is upper right<br>
'data' : use the coordinate system of the object being annotated (default)<br>
+ 'offset points' : Specify an offset (in points) from the xy value<br>
'polar' : you can specify theta, r for the annotation, even<br>
in cartesian plots. Note that if you<br>
are using a polar axes, you do not need<br>
@@ -7673,7 +7669,7 @@
<dl><dt><a name="PolarSubplot-clear"><strong>clear</strong></a>(self)</dt><dd><tt>clear the axes</tt></dd></dl>
-<dl><dt><a name="PolarSubplot-cohere"><strong>cohere</strong></a>(self, x, y, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x860b3e4></font>, window<font color="#909090">=<function window_hanning at 0x860b294></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>COHERE(x, y, NFFT=256, Fs=2, Fc=0, detrend = mlab.detrend_none,<br>
+<dl><dt><a name="PolarSubplot-cohere"><strong>cohere</strong></a>(self, x, y, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x868817c></font>, window<font color="#909090">=<function window_hanning at 0x868802c></font>, noverlap<font color="#909090">=0</font>, **kwargs)</dt><dd><tt>COHERE(x, y, NFFT=256, Fs=2, Fc=0, detrend = mlab.detrend_none,<br>
window = mlab.window_hanning, noverlap=0, **kwargs)<br>
<br>
cohere the coherence between x and y. Coherence is the normalized<br>
@@ -7962,7 +7958,7 @@
removed. Chunking introduces artifacts at the chunk<br>
boundaries unless antialiased = False</tt></dd></dl>
-<dl><dt><a name="PolarSubplot-csd"><strong>csd</strong></a>(self, x, y, NFFT<font color="#909090">=256</font>, Fs<font color="#909090">=2</font>, Fc<font color="#909090">=0</font>, detrend<font color="#909090">=<function detrend_none at 0x860b3e4></font>, window<font color="#909090">=<function w...
[truncated message content] |