SourceForge logo
SourceForge logo
Menu

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

You can subscribe to this list here.

2007 Jan
Feb
Mar
Apr
May
Jun
Jul
(115)
Aug
(120)
Sep
(137)
Oct
(170)
Nov
(461)
Dec
(263)
2008 Jan
(120)
Feb
(74)
Mar
(35)
Apr
(74)
May
(245)
Jun
(356)
Jul
(240)
Aug
(115)
Sep
(78)
Oct
(225)
Nov
(98)
Dec
(271)
2009 Jan
(132)
Feb
(84)
Mar
(74)
Apr
(56)
May
(90)
Jun
(79)
Jul
(83)
Aug
(296)
Sep
(214)
Oct
(76)
Nov
(82)
Dec
(66)
2010 Jan
(46)
Feb
(58)
Mar
(51)
Apr
(77)
May
(58)
Jun
(126)
Jul
(128)
Aug
(64)
Sep
(50)
Oct
(44)
Nov
(48)
Dec
(54)
2011 Jan
(68)
Feb
(52)
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
(1)
2018 Jan
Feb
Mar
Apr
May
(1)
Jun
Jul
Aug
Sep
Oct
Nov
Dec
S M T W T F S






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





Showing results of 296

<< < 1 2 3 4 .. 12 > >> (Page 2 of 12)
Revision: 7596
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7596&view=rev
Author: efiring
Date: 2009年08月30日 06:29:58 +0000 (2009年8月30日)
Log Message:
-----------
New version of empty_datetime.png; it is not clear what caused the change,
but the new version is nicer, so let's hope it is produced consistently now.
The difference is that there is no x ticklabel on the far left.
Modified Paths:
--------------
 trunk/matplotlib/test/test_matplotlib/baseline/TestAxes/empty_datetime.png
Modified: trunk/matplotlib/test/test_matplotlib/baseline/TestAxes/empty_datetime.png
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <as...@us...> - 2009年08月30日 04:44:38
Revision: 7595
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7595&view=rev
Author: astraw
Date: 2009年08月30日 04:44:28 +0000 (2009年8月30日)
Log Message:
-----------
testing: add support for KnownFailures
Modified Paths:
--------------
 trunk/matplotlib/CHANGELOG
 trunk/matplotlib/setup.py
 trunk/matplotlib/test/mplTest/MplNosePlugin.py
 trunk/matplotlib/test/run-mpl-test.py
 trunk/matplotlib/test/test_matplotlib/TestAxes.py
Added Paths:
-----------
 trunk/matplotlib/lib/matplotlib/testing/
 trunk/matplotlib/lib/matplotlib/testing/__init__.py
 trunk/matplotlib/lib/matplotlib/testing/decorators.py
 trunk/matplotlib/lib/matplotlib/testing/noseclasses.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG	2009年08月30日 04:44:11 UTC (rev 7594)
+++ trunk/matplotlib/CHANGELOG	2009年08月30日 04:44:28 UTC (rev 7595)
@@ -1,3 +1,7 @@
+2009年08月29日 Added matplotlib.testing package, which contains a Nose
+ plugin and a decorator that lets tests be marked as
+ KnownFailures - ADS
+
 2009年08月20日 Added scaled dict to AutoDateFormatter for customized
 scales - JDH
 
Added: trunk/matplotlib/lib/matplotlib/testing/decorators.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/testing/decorators.py	 (rev 0)
+++ trunk/matplotlib/lib/matplotlib/testing/decorators.py	2009年08月30日 04:44:28 UTC (rev 7595)
@@ -0,0 +1,24 @@
+from matplotlib.testing.noseclasses import KnownFailureTest
+import sys
+
+def knownfailureif(fail_condition, msg=None):
+ # based on numpy.testing.dec.knownfailureif
+ if msg is None:
+ msg = 'Test known to fail'
+ def known_fail_decorator(f):
+ # Local import to avoid a hard nose dependency and only incur the
+ # import time overhead at actual test-time.
+ import nose
+ def failer(*args, **kwargs):
+ try:
+ # Always run the test (to generate images).
+ result = f(*args, **kwargs)
+ except:
+ if fail_condition:
+ raise KnownFailureTest(msg)
+ else:
+ raise
+ # Fixme: Should raise KnownFailureDidNotFail if fail_condition==True?
+ return result
+ return nose.tools.make_decorator(f)(failer)
+ return known_fail_decorator
Added: trunk/matplotlib/lib/matplotlib/testing/noseclasses.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/testing/noseclasses.py	 (rev 0)
+++ trunk/matplotlib/lib/matplotlib/testing/noseclasses.py	2009年08月30日 04:44:28 UTC (rev 7595)
@@ -0,0 +1,41 @@
+import os
+from nose.plugins.errorclass import ErrorClass, ErrorClassPlugin
+
+class KnownFailureTest(Exception):
+ '''Raise this exception to mark a test as a known failing test.'''
+ pass
+
+class KnownFailure(ErrorClassPlugin):
+ '''Plugin that installs a KNOWNFAIL error class for the
+ KnownFailureClass exception. When KnownFailureTest is raised,
+ the exception will be logged in the knownfail attribute of the
+ result, 'K' or 'KNOWNFAIL' (verbose) will be output, and the
+ exception will not be counted as an error or failure.
+
+ This is based on numpy.testing.noseclasses.KnownFailure.
+ '''
+ enabled = True
+ knownfail = ErrorClass(KnownFailureTest,
+ label='KNOWNFAIL',
+ isfailure=False)
+
+ def options(self, parser, env=os.environ):
+ env_opt = 'NOSE_WITHOUT_KNOWNFAIL'
+ parser.add_option('--no-knownfail', action='store_true',
+ dest='noKnownFail', default=env.get(env_opt, False),
+ help='Disable special handling of KnownFailureTest '
+ 'exceptions')
+
+ def configure(self, options, conf):
+ if not self.can_configure:
+ return
+ self.conf = conf
+ disable = getattr(options, 'noKnownFail', False)
+ if disable:
+ self.enabled = False
+
+ def addError( self, test, err ):
+ # Fixme (Really weird): if I don't leave empty method here,
+ # nose gets confused and KnownFails become testing errors when
+ # using the MplNosePlugin and MplTestCase.
+ pass
Modified: trunk/matplotlib/setup.py
===================================================================
--- trunk/matplotlib/setup.py	2009年08月30日 04:44:11 UTC (rev 7594)
+++ trunk/matplotlib/setup.py	2009年08月30日 04:44:28 UTC (rev 7595)
@@ -50,6 +50,7 @@
 'matplotlib',
 'matplotlib.backends',
 'matplotlib.projections',
+ 'matplotlib.testing',
 # 'matplotlib.toolkits',
 'mpl_toolkits',
 'mpl_toolkits.mplot3d',
Modified: trunk/matplotlib/test/mplTest/MplNosePlugin.py
===================================================================
--- trunk/matplotlib/test/mplTest/MplNosePlugin.py	2009年08月30日 04:44:11 UTC (rev 7594)
+++ trunk/matplotlib/test/mplTest/MplNosePlugin.py	2009年08月30日 04:44:28 UTC (rev 7595)
@@ -12,6 +12,7 @@
 from path_utils import *
 import directories as dirs
 from MplTestCase import MplTestCase
+from matplotlib.testing.noseclasses import KnownFailureTest
 
 #=======================================================================
 
@@ -48,7 +49,8 @@
 
 TEST_ERRORED = -1
 TEST_FAILED = 0
- TEST_PASSED = 1
+ TEST_KNOWN_FAILED = 1
+ TEST_PASSED = 2
 
 #--------------------------------------------------------------------
 # Some 'property' functions
@@ -148,7 +150,11 @@
 err : 3-tuple
 sys.exc_info() tuple
 """
- self.testResults.append( (test, self.TEST_ERRORED, err) )
+ (type, value, traceback) = err
+ if isinstance(value,KnownFailureTest):
+ self.testResults.append( (test, self.TEST_KNOWN_FAILED, err) )
+ else:
+ self.testResults.append( (test, self.TEST_ERRORED, err) )
 
 #--------------------------------------------------------------------
 def addFailure( self, test, err ):
Modified: trunk/matplotlib/test/run-mpl-test.py
===================================================================
--- trunk/matplotlib/test/run-mpl-test.py	2009年08月30日 04:44:11 UTC (rev 7594)
+++ trunk/matplotlib/test/run-mpl-test.py	2009年08月30日 04:44:28 UTC (rev 7595)
@@ -44,6 +44,7 @@
 
 import nose
 from mplTest import MplNosePlugin, path_utils
+from matplotlib.testing.noseclasses import KnownFailure
 
 if '--clean' in args:
 # perform the cleaning process and exit
@@ -90,7 +91,7 @@
 
 ### Run nose
 success = nose.run( argv = args,
- plugins = [ MplNosePlugin() ] )
+ plugins = [ MplNosePlugin(), KnownFailure() ] )
 
 ### do other stuff here
 
Modified: trunk/matplotlib/test/test_matplotlib/TestAxes.py
===================================================================
--- trunk/matplotlib/test/test_matplotlib/TestAxes.py	2009年08月30日 04:44:11 UTC (rev 7594)
+++ trunk/matplotlib/test/test_matplotlib/TestAxes.py	2009年08月30日 04:44:28 UTC (rev 7595)
@@ -3,6 +3,7 @@
 #=======================================================================
 
 from mplTest import MplTestCase, units
+from matplotlib.testing.decorators import knownfailureif
 
 #=======================================================================
 # Add import modules below.
@@ -57,6 +58,7 @@
 self.checkImage( fname )
 
 #--------------------------------------------------------------------
+ @knownfailureif(True, "Fails due to SF bug 2846058")
 def test_formatter_ticker( self ):
 """Test Some formatter and ticker issues."""
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <as...@us...> - 2009年08月30日 04:44:22
Revision: 7594
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7594&view=rev
Author: astraw
Date: 2009年08月30日 04:44:11 +0000 (2009年8月30日)
Log Message:
-----------
buildbot: wipe build directory to ensure clean rebuilds
Modified Paths:
--------------
 trunk/matplotlib/test/_buildbot_install.py
Modified: trunk/matplotlib/test/_buildbot_install.py
===================================================================
--- trunk/matplotlib/test/_buildbot_install.py	2009年08月30日 04:44:03 UTC (rev 7593)
+++ trunk/matplotlib/test/_buildbot_install.py	2009年08月30日 04:44:11 UTC (rev 7594)
@@ -10,6 +10,11 @@
 if os.path.exists(TARGET):
 shutil.rmtree(TARGET)
 
+if 1:
+ build_path = 'build'
+ if os.path.exists(build_path):
+ shutil.rmtree(build_path)
+
 check_call('virtualenv %s'%(TARGET,))
 TARGET_py = os.path.join(TARGET,'bin','python')
 check_call('%s setup.py install'%TARGET_py)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <as...@us...> - 2009年08月30日 04:44:15
Revision: 7593
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7593&view=rev
Author: astraw
Date: 2009年08月30日 04:44:03 +0000 (2009年8月30日)
Log Message:
-----------
fix typo
Modified Paths:
--------------
 trunk/matplotlib/lib/matplotlib/cbook.py
Modified: trunk/matplotlib/lib/matplotlib/cbook.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/cbook.py	2009年08月30日 04:43:54 UTC (rev 7592)
+++ trunk/matplotlib/lib/matplotlib/cbook.py	2009年08月30日 04:44:03 UTC (rev 7593)
@@ -910,7 +910,7 @@
 
 def get_recursive_filelist(args):
 """
- Recurs all the files and dirs in *args* ignoring symbolic links
+ Recurse all the files and dirs in *args* ignoring symbolic links
 and return the files as a list of strings
 """
 files = []
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <as...@us...> - 2009年08月30日 04:44:05
Revision: 7592
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7592&view=rev
Author: astraw
Date: 2009年08月30日 04:43:54 +0000 (2009年8月30日)
Log Message:
-----------
testing: use standard nose mechanism for printing test name
Modified Paths:
--------------
 trunk/matplotlib/test/_buildbot_test.py
 trunk/matplotlib/test/mplTest/MplNosePlugin.py
Modified: trunk/matplotlib/test/_buildbot_test.py
===================================================================
--- trunk/matplotlib/test/_buildbot_test.py	2009年08月30日 03:45:21 UTC (rev 7591)
+++ trunk/matplotlib/test/_buildbot_test.py	2009年08月30日 04:43:54 UTC (rev 7592)
@@ -13,5 +13,5 @@
 TARGET_py = os.path.join(TARGET,'bin','python')
 check_call('%s -c "import shutil,matplotlib; x=matplotlib.get_configdir(); shutil.rmtree(x)"'%TARGET_py)
 
-check_call('%s run-mpl-test.py --all --keep-failed'%TARGET_py,
+check_call('%s run-mpl-test.py --verbose --all --keep-failed'%TARGET_py,
 cwd='test')
Modified: trunk/matplotlib/test/mplTest/MplNosePlugin.py
===================================================================
--- trunk/matplotlib/test/mplTest/MplNosePlugin.py	2009年08月30日 03:45:21 UTC (rev 7591)
+++ trunk/matplotlib/test/mplTest/MplNosePlugin.py	2009年08月30日 04:43:54 UTC (rev 7592)
@@ -702,10 +702,6 @@
 rmdir( self.outputDir )
 mkdir( self.outputDir, recursive = True )
 
- # sys.stdout.write( "%s\n %s \n" % (test.id(), test.shortDescription()) )
- print "%s" % (test.id())
- print " %s" % (test.shortDescription())
-
 #--------------------------------------------------------------------
 def stopContext( self, context ):
 """Called after the tests in a context have run and the context has been
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <jd...@us...> - 2009年08月30日 03:45:34
Revision: 7591
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7591&view=rev
Author: jdh2358
Date: 2009年08月30日 03:45:21 +0000 (2009年8月30日)
Log Message:
-----------
Merged revisions 7589 via svnmerge from 
https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/branches/v0_99_maint
........
 r7589 | jdh2358 | 2009年08月29日 22:40:08 -0500 (2009年8月29日) | 1 line
 
 added minor kwarg to get_?ticklines and applied ginpu patch
........
Modified Paths:
--------------
 trunk/matplotlib/doc/users/license.rst
 trunk/matplotlib/lib/matplotlib/blocking_input.py
 trunk/matplotlib/lib/matplotlib/figure.py
Property Changed:
----------------
 trunk/matplotlib/
Property changes on: trunk/matplotlib
___________________________________________________________________
Modified: svnmerge-integrated
 - /branches/mathtex:1-7263 /branches/v0_98_5_maint:1-7253 /branches/v0_99_maint:1-7584
 + /branches/mathtex:1-7263 /branches/v0_98_5_maint:1-7253 /branches/v0_99_maint:1-7590
Modified: trunk/matplotlib/doc/users/license.rst
===================================================================
--- trunk/matplotlib/doc/users/license.rst	2009年08月30日 03:44:06 UTC (rev 7590)
+++ trunk/matplotlib/doc/users/license.rst	2009年08月30日 03:45:21 UTC (rev 7591)
@@ -28,7 +28,7 @@
 derivative works, distribute, and otherwise use matplotlib |version|
 alone or in any derivative version, provided, however, that JDH's
 License Agreement and JDH's notice of copyright, i.e., "Copyright (c)
-2002-2008 John D. Hunter; All Rights Reserved" are retained in
+2002-2009 John D. Hunter; All Rights Reserved" are retained in
 matplotlib |version| alone or in any derivative version prepared by
 Licensee.
 
Modified: trunk/matplotlib/lib/matplotlib/blocking_input.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/blocking_input.py	2009年08月30日 03:44:06 UTC (rev 7590)
+++ trunk/matplotlib/lib/matplotlib/blocking_input.py	2009年08月30日 03:45:21 UTC (rev 7591)
@@ -114,15 +114,25 @@
 Class that creates a callable object to retrieve mouse clicks in a
 blocking way.
 
- This class will also retrieve keyboard clicks and treat them like 
+ This class will also retrieve keyboard clicks and treat them like
 appropriate mouse clicks (delete and backspace are like mouse button 3,
 enter is like mouse button 2 and all others are like mouse button 1).
 """
- def __init__(self, fig):
+
+ button_add = 1
+ button_pop = 3
+ button_stop = 2
+
+ def __init__(self, fig, mouse_add=1, mouse_pop=3, mouse_stop=2):
 BlockingInput.__init__(self, fig=fig,
 eventslist=('button_press_event',
 'key_press_event') )
+ self.button_add = mouse_add
+ self.button_pop = mouse_pop
+ self.button_stop= mouse_stop
 
+
+
 def post_event(self):
 """
 This will be called to process events
@@ -133,19 +143,19 @@
 self.key_event()
 else:
 self.mouse_event()
- 
+
 def mouse_event(self):
 '''Process a mouse click event'''
 
 event = self.events[-1]
 button = event.button
 
- if button == 3:
- self.button3(event)
- elif button == 2:
- self.button2(event)
+ if button == self.button_pop:
+ self.mouse_event_pop(event,-1)
+ elif button == self.button_stop:
+ self.mouse_event_stop(event)
 else:
- self.button1(event)
+ self.mouse_event_add(event)
 
 def key_event(self):
 '''
@@ -154,16 +164,16 @@
 '''
 
 event = self.events[-1]
- key = event.key
+ key = event.key.lower()
 
- if key == 'backspace' or key == 'delete':
- self.button3(event)
- elif key == 'enter':
- self.button2(event)
+ if key in ['backspace', 'delete']:
+ self.mouse_event_pop(event)
+ elif key in ['escape', 'enter']: # on windows XP and wxAgg, the enter key doesn't seem to register
+ self.mouse_event_stop(event)
 else:
- self.button1(event)
+ self.mouse_event_add(event)
 
- def button1( self, event ):
+ def mouse_event_add( self, event ):
 """
 Will be called for any event involving a button other than
 button 2 or 3. This will add a click if it is inside axes.
@@ -171,34 +181,34 @@
 if event.inaxes:
 self.add_click(event)
 else: # If not a valid click, remove from event list
- BlockingInput.pop(self)
+ BlockingInput.pop(self,-1)
 
- def button2( self, event ):
+ def mouse_event_stop( self, event ):
 """
 Will be called for any event involving button 2.
 Button 2 ends blocking input.
 """
 
 # Remove last event just for cleanliness
- BlockingInput.pop(self)
+ BlockingInput.pop(self,-1)
 
 # This will exit even if not in infinite mode. This is
 # consistent with matlab and sometimes quite useful, but will
 # require the user to test how many points were actually
 # returned before using data.
- self.fig.canvas.stop_event_loop()
+ self.fig.canvas.stop_event_loop(event)
 
- def button3( self, event ):
+ def mouse_event_pop( self, event ):
 """
 Will be called for any event involving button 3.
 Button 3 removes the last click.
 """
 # Remove this last event
- BlockingInput.pop(self)
+ BlockingInput.pop(self,-1)
 
 # Now remove any existing clicks if possible
 if len(self.events)>0:
- self.pop()
+ self.pop(event,-1)
 
 def add_click(self,event):
 """
@@ -211,11 +221,23 @@
 
 # If desired plot up click
 if self.show_clicks:
+
+ # make sure we don't mess with the axes zoom
+ xlim = event.inaxes.get_xlim()
+ ylim = event.inaxes.get_ylim()
+
+ # plot the clicks
 self.marks.extend(
 event.inaxes.plot([event.xdata,], [event.ydata,], 'r+') )
+
+ # before we draw, make sure to reset the limits
+ event.inaxes.set_xlim(xlim)
+ event.inaxes.set_ylim(ylim)
 self.fig.canvas.draw()
 
- def pop_click(self,index=-1):
+
+
+ def pop_click(self,event,index=-1):
 """
 This removes a click from the list of clicks. Defaults to
 removing the last click.
@@ -223,25 +245,49 @@
 self.clicks.pop(index)
 
 if self.show_clicks:
+
+ # make sure we don't mess with the axes zoom
+ xlim = event.inaxes.get_xlim()
+ ylim = event.inaxes.get_ylim()
+
 mark = self.marks.pop(index)
 mark.remove()
+
+ # before we draw, make sure to reset the limits
+ event.inaxes.set_xlim(xlim)
+ event.inaxes.set_ylim(ylim)
 self.fig.canvas.draw()
+ # NOTE: I do NOT understand why the above 3 lines does not work
+ # for the keyboard backspace event on windows XP wxAgg.
+ # maybe event.inaxes here is a COPY of the actual axes?
 
- def pop(self,index=-1):
+
+ def pop(self,event,index=-1):
 """
 This removes a click and the associated event from the object.
 Defaults to removing the last click, but any index can be
 supplied.
 """
- self.pop_click(index)
+ self.pop_click(event,index)
 BlockingInput.pop(self,index)
 
- def cleanup(self):
+ def cleanup(self,event=None):
 # clean the figure
 if self.show_clicks:
+ if event:
+ # make sure we don't mess with the axes zoom
+ xlim = event.inaxes.get_xlim()
+ ylim = event.inaxes.get_ylim()
+
 for mark in self.marks:
 mark.remove()
 self.marks = []
+
+ if event:
+ # before we draw, make sure to reset the limits
+ event.inaxes.set_xlim(xlim)
+ event.inaxes.set_ylim(ylim)
+
 self.fig.canvas.draw()
 
 # Call base class to remove callbacks
Modified: trunk/matplotlib/lib/matplotlib/figure.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/figure.py	2009年08月30日 03:44:06 UTC (rev 7590)
+++ trunk/matplotlib/lib/matplotlib/figure.py	2009年08月30日 03:45:21 UTC (rev 7591)
@@ -1095,11 +1095,12 @@
 ax.update_params()
 ax.set_position(ax.figbox)
 
- def ginput(self, n=1, timeout=30, show_clicks=True):
+ def ginput(self, n=1, timeout=30, show_clicks=True, mouse_add=1, mouse_pop=3, mouse_stop=2):
 """
 call signature::
 
- ginput(self, n=1, timeout=30, show_clicks=True)
+ ginput(self, n=1, timeout=30, show_clicks=True,
+ mouse_add=1, mouse_pop=3, mouse_stop=2)
 
 Blocking call to interact with the figure.
 
@@ -1120,7 +1121,9 @@
 manager) selects a point.
 """
 
- blocking_mouse_input = BlockingMouseInput(self)
+ blocking_mouse_input = BlockingMouseInput(self, mouse_add =mouse_add,
+ mouse_pop =mouse_pop,
+ mouse_stop=mouse_stop)
 return blocking_mouse_input(n=n, timeout=timeout,
 show_clicks=show_clicks)
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <jd...@us...> - 2009年08月30日 03:44:12
Revision: 7590
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7590&view=rev
Author: jdh2358
Date: 2009年08月30日 03:44:06 +0000 (2009年8月30日)
Log Message:
-----------
sync before merge
Modified Paths:
--------------
 trunk/matplotlib/make.osx
Modified: trunk/matplotlib/make.osx
===================================================================
--- trunk/matplotlib/make.osx	2009年08月30日 03:40:08 UTC (rev 7589)
+++ trunk/matplotlib/make.osx	2009年08月30日 03:44:06 UTC (rev 7590)
@@ -5,7 +5,7 @@
 PYTHON=python${PYVERSION}
 ZLIBVERSION=1.2.3
 PNGVERSION=1.2.33
-FREETYPEVERSION=2.3.7
+FREETYPEVERSION=2.3.5
 MACOSX_DEPLOYMENT_TARGET=10.4
 
 ## You shouldn't need to configure past this point
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <jd...@us...> - 2009年08月30日 03:40:21
Revision: 7589
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7589&view=rev
Author: jdh2358
Date: 2009年08月30日 03:40:08 +0000 (2009年8月30日)
Log Message:
-----------
added minor kwarg to get_?ticklines and applied ginpu patch
Modified Paths:
--------------
 branches/v0_99_maint/doc/users/license.rst
 branches/v0_99_maint/lib/matplotlib/blocking_input.py
 branches/v0_99_maint/lib/matplotlib/figure.py
Modified: branches/v0_99_maint/doc/users/license.rst
===================================================================
--- branches/v0_99_maint/doc/users/license.rst	2009年08月30日 01:04:11 UTC (rev 7588)
+++ branches/v0_99_maint/doc/users/license.rst	2009年08月30日 03:40:08 UTC (rev 7589)
@@ -28,7 +28,7 @@
 derivative works, distribute, and otherwise use matplotlib |version|
 alone or in any derivative version, provided, however, that JDH's
 License Agreement and JDH's notice of copyright, i.e., "Copyright (c)
-2002-2008 John D. Hunter; All Rights Reserved" are retained in
+2002-2009 John D. Hunter; All Rights Reserved" are retained in
 matplotlib |version| alone or in any derivative version prepared by
 Licensee.
 
Modified: branches/v0_99_maint/lib/matplotlib/blocking_input.py
===================================================================
--- branches/v0_99_maint/lib/matplotlib/blocking_input.py	2009年08月30日 01:04:11 UTC (rev 7588)
+++ branches/v0_99_maint/lib/matplotlib/blocking_input.py	2009年08月30日 03:40:08 UTC (rev 7589)
@@ -114,15 +114,25 @@
 Class that creates a callable object to retrieve mouse clicks in a
 blocking way.
 
- This class will also retrieve keyboard clicks and treat them like 
+ This class will also retrieve keyboard clicks and treat them like
 appropriate mouse clicks (delete and backspace are like mouse button 3,
 enter is like mouse button 2 and all others are like mouse button 1).
 """
- def __init__(self, fig):
+
+ button_add = 1
+ button_pop = 3
+ button_stop = 2
+
+ def __init__(self, fig, mouse_add=1, mouse_pop=3, mouse_stop=2):
 BlockingInput.__init__(self, fig=fig,
 eventslist=('button_press_event',
 'key_press_event') )
+ self.button_add = mouse_add
+ self.button_pop = mouse_pop
+ self.button_stop= mouse_stop
 
+
+
 def post_event(self):
 """
 This will be called to process events
@@ -133,19 +143,19 @@
 self.key_event()
 else:
 self.mouse_event()
- 
+
 def mouse_event(self):
 '''Process a mouse click event'''
 
 event = self.events[-1]
 button = event.button
 
- if button == 3:
- self.button3(event)
- elif button == 2:
- self.button2(event)
+ if button == self.button_pop:
+ self.mouse_event_pop(event,-1)
+ elif button == self.button_stop:
+ self.mouse_event_stop(event)
 else:
- self.button1(event)
+ self.mouse_event_add(event)
 
 def key_event(self):
 '''
@@ -154,16 +164,16 @@
 '''
 
 event = self.events[-1]
- key = event.key
+ key = event.key.lower()
 
- if key == 'backspace' or key == 'delete':
- self.button3(event)
- elif key == 'enter':
- self.button2(event)
+ if key in ['backspace', 'delete']:
+ self.mouse_event_pop(event)
+ elif key in ['escape', 'enter']: # on windows XP and wxAgg, the enter key doesn't seem to register
+ self.mouse_event_stop(event)
 else:
- self.button1(event)
+ self.mouse_event_add(event)
 
- def button1( self, event ):
+ def mouse_event_add( self, event ):
 """
 Will be called for any event involving a button other than
 button 2 or 3. This will add a click if it is inside axes.
@@ -171,34 +181,34 @@
 if event.inaxes:
 self.add_click(event)
 else: # If not a valid click, remove from event list
- BlockingInput.pop(self)
+ BlockingInput.pop(self,-1)
 
- def button2( self, event ):
+ def mouse_event_stop( self, event ):
 """
 Will be called for any event involving button 2.
 Button 2 ends blocking input.
 """
 
 # Remove last event just for cleanliness
- BlockingInput.pop(self)
+ BlockingInput.pop(self,-1)
 
 # This will exit even if not in infinite mode. This is
 # consistent with matlab and sometimes quite useful, but will
 # require the user to test how many points were actually
 # returned before using data.
- self.fig.canvas.stop_event_loop()
+ self.fig.canvas.stop_event_loop(event)
 
- def button3( self, event ):
+ def mouse_event_pop( self, event ):
 """
 Will be called for any event involving button 3.
 Button 3 removes the last click.
 """
 # Remove this last event
- BlockingInput.pop(self)
+ BlockingInput.pop(self,-1)
 
 # Now remove any existing clicks if possible
 if len(self.events)>0:
- self.pop()
+ self.pop(event,-1)
 
 def add_click(self,event):
 """
@@ -211,11 +221,23 @@
 
 # If desired plot up click
 if self.show_clicks:
+
+ # make sure we don't mess with the axes zoom
+ xlim = event.inaxes.get_xlim()
+ ylim = event.inaxes.get_ylim()
+
+ # plot the clicks
 self.marks.extend(
 event.inaxes.plot([event.xdata,], [event.ydata,], 'r+') )
+
+ # before we draw, make sure to reset the limits
+ event.inaxes.set_xlim(xlim)
+ event.inaxes.set_ylim(ylim)
 self.fig.canvas.draw()
 
- def pop_click(self,index=-1):
+
+
+ def pop_click(self,event,index=-1):
 """
 This removes a click from the list of clicks. Defaults to
 removing the last click.
@@ -223,25 +245,49 @@
 self.clicks.pop(index)
 
 if self.show_clicks:
+
+ # make sure we don't mess with the axes zoom
+ xlim = event.inaxes.get_xlim()
+ ylim = event.inaxes.get_ylim()
+
 mark = self.marks.pop(index)
 mark.remove()
+
+ # before we draw, make sure to reset the limits
+ event.inaxes.set_xlim(xlim)
+ event.inaxes.set_ylim(ylim)
 self.fig.canvas.draw()
+ # NOTE: I do NOT understand why the above 3 lines does not work
+ # for the keyboard backspace event on windows XP wxAgg.
+ # maybe event.inaxes here is a COPY of the actual axes?
 
- def pop(self,index=-1):
+
+ def pop(self,event,index=-1):
 """
 This removes a click and the associated event from the object.
 Defaults to removing the last click, but any index can be
 supplied.
 """
- self.pop_click(index)
+ self.pop_click(event,index)
 BlockingInput.pop(self,index)
 
- def cleanup(self):
+ def cleanup(self,event=None):
 # clean the figure
 if self.show_clicks:
+ if event:
+ # make sure we don't mess with the axes zoom
+ xlim = event.inaxes.get_xlim()
+ ylim = event.inaxes.get_ylim()
+
 for mark in self.marks:
 mark.remove()
 self.marks = []
+
+ if event:
+ # before we draw, make sure to reset the limits
+ event.inaxes.set_xlim(xlim)
+ event.inaxes.set_ylim(ylim)
+
 self.fig.canvas.draw()
 
 # Call base class to remove callbacks
Modified: branches/v0_99_maint/lib/matplotlib/figure.py
===================================================================
--- branches/v0_99_maint/lib/matplotlib/figure.py	2009年08月30日 01:04:11 UTC (rev 7588)
+++ branches/v0_99_maint/lib/matplotlib/figure.py	2009年08月30日 03:40:08 UTC (rev 7589)
@@ -1086,11 +1086,12 @@
 ax.update_params()
 ax.set_position(ax.figbox)
 
- def ginput(self, n=1, timeout=30, show_clicks=True):
+ def ginput(self, n=1, timeout=30, show_clicks=True, mouse_add=1, mouse_pop=3, mouse_stop=2):
 """
 call signature::
 
- ginput(self, n=1, timeout=30, show_clicks=True)
+ ginput(self, n=1, timeout=30, show_clicks=True,
+ mouse_add=1, mouse_pop=3, mouse_stop=2)
 
 Blocking call to interact with the figure.
 
@@ -1111,7 +1112,9 @@
 manager) selects a point.
 """
 
- blocking_mouse_input = BlockingMouseInput(self)
+ blocking_mouse_input = BlockingMouseInput(self, mouse_add =mouse_add,
+ mouse_pop =mouse_pop,
+ mouse_stop=mouse_stop)
 return blocking_mouse_input(n=n, timeout=timeout,
 show_clicks=show_clicks)
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7588
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7588&view=rev
Author: jswhit
Date: 2009年08月30日 01:04:11 +0000 (2009年8月30日)
Log Message:
-----------
workaround for contourf bug (mask regions outside map)
Modified Paths:
--------------
 trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py
Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py
===================================================================
--- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py	2009年08月30日 00:08:34 UTC (rev 7587)
+++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py	2009年08月30日 01:04:11 UTC (rev 7588)
@@ -2831,9 +2831,17 @@
 region (see examples/contour_demo.py).""")
 # mask for points outside projection limb.
 xymask = np.logical_or(np.greater(x,1.e20),np.greater(y,1.e20))
+ # mask outside projection region (workaround for contourf bug?)
+ epsx = 0.1*(self.xmax-self.xmin)
+ epsy = 0.1*(self.ymax-self.ymin)
+ outsidemask = np.logical_or(np.logical_or(x > self.xmax+epsx,\
+ x < self.xmin-epsy),\
+ np.logical_or(y > self.ymax+epsy,\
+ y < self.ymin-epsy))
 data = ma.asarray(data)
- # combine with data mask.
- mask = np.logical_or(ma.getmaskarray(data),xymask)
+ # combine masks.
+ mask = \
+ np.logical_or(outsidemask,np.logical_or(ma.getmaskarray(data),xymask))
 data = ma.masked_array(data,mask=mask)
 # allow callers to override the hold state by passing hold=True|False
 b = ax.ishold()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7587
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7587&view=rev
Author: astraw
Date: 2009年08月30日 00:08:34 +0000 (2009年8月30日)
Log Message:
-----------
testing: add missing import and add SF bug ID
Modified Paths:
--------------
 trunk/matplotlib/test/test_matplotlib/TestAxes.py
Modified: trunk/matplotlib/test/test_matplotlib/TestAxes.py
===================================================================
--- trunk/matplotlib/test/test_matplotlib/TestAxes.py	2009年08月30日 00:03:25 UTC (rev 7586)
+++ trunk/matplotlib/test/test_matplotlib/TestAxes.py	2009年08月30日 00:08:34 UTC (rev 7587)
@@ -2,7 +2,7 @@
 """The Axes unit-test class implementation."""
 #=======================================================================
 
-from mplTest import MplTestCase
+from mplTest import MplTestCase, units
 
 #=======================================================================
 # Add import modules below.
@@ -88,6 +88,8 @@
 fig.savefig( fname )
 self.checkImage( fname )
 
+ # See SF bug 2846058
+ # https://sourceforge.net/tracker/?func=detail&aid=2846058&group_id=80706&atid=560720
 fname = self.outFile( "formatter_ticker_005.png" )
 ax.set_xlabel( "x-label 005" )
 ax.autoscale_view()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7586
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7586&view=rev
Author: astraw
Date: 2009年08月30日 00:03:25 +0000 (2009年8月30日)
Log Message:
-----------
remove 'import *' usage
Modified Paths:
--------------
 trunk/matplotlib/test/test_matplotlib/TestAxes.py
Modified: trunk/matplotlib/test/test_matplotlib/TestAxes.py
===================================================================
--- trunk/matplotlib/test/test_matplotlib/TestAxes.py	2009年08月29日 18:14:28 UTC (rev 7585)
+++ trunk/matplotlib/test/test_matplotlib/TestAxes.py	2009年08月30日 00:03:25 UTC (rev 7586)
@@ -2,7 +2,7 @@
 """The Axes unit-test class implementation."""
 #=======================================================================
 
-from mplTest import *
+from mplTest import MplTestCase
 
 #=======================================================================
 # Add import modules below.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <ef...@us...> - 2009年08月29日 18:14:45
Revision: 7585
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7585&view=rev
Author: efiring
Date: 2009年08月29日 18:14:28 +0000 (2009年8月29日)
Log Message:
-----------
Merged revisions 7582-7584 via svnmerge from 
https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/branches/v0_99_maint
........
 r7582 | jdh2358 | 2009年08月29日 06:35:35 -1000 (2009年8月29日) | 1 line
 
 added Michael Sarahan's image tutorial from the scipy mpl sprint
........
 r7583 | jdh2358 | 2009年08月29日 06:46:44 -1000 (2009年8月29日) | 1 line
 
 minor tweaks to the image tut
........
 r7584 | efiring | 2009年08月29日 07:48:37 -1000 (2009年8月29日) | 2 lines
 
 Semilogx, semilogy ensure one axis is linear; patch by Tony Yu
........
Modified Paths:
--------------
 trunk/matplotlib/doc/_templates/indexsidebar.html
 trunk/matplotlib/doc/_templates/layout.html
 trunk/matplotlib/doc/devel/coding_guide.rst
 trunk/matplotlib/doc/users/index.rst
 trunk/matplotlib/doc/users/transforms_tutorial.rst
 trunk/matplotlib/doc/users/whats_new.rst
 trunk/matplotlib/lib/matplotlib/axes.py
Added Paths:
-----------
 trunk/matplotlib/doc/_static/stinkbug.png
 trunk/matplotlib/doc/users/image_tutorial.rst
Property Changed:
----------------
 trunk/matplotlib/
 trunk/matplotlib/doc/pyplots/README
 trunk/matplotlib/doc/sphinxext/gen_gallery.py
 trunk/matplotlib/doc/sphinxext/gen_rst.py
 trunk/matplotlib/examples/misc/multiprocess.py
 trunk/matplotlib/examples/mplot3d/contour3d_demo.py
 trunk/matplotlib/examples/mplot3d/contourf3d_demo.py
 trunk/matplotlib/examples/mplot3d/polys3d_demo.py
 trunk/matplotlib/examples/mplot3d/scatter3d_demo.py
 trunk/matplotlib/examples/mplot3d/surface3d_demo.py
 trunk/matplotlib/examples/mplot3d/wire3d_demo.py
 trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py
 trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py
 trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py
Property changes on: trunk/matplotlib
___________________________________________________________________
Modified: svnmerge-integrated
 - /branches/mathtex:1-7263 /branches/v0_98_5_maint:1-7253 /branches/v0_99_maint:1-7569
 + /branches/mathtex:1-7263 /branches/v0_98_5_maint:1-7253 /branches/v0_99_maint:1-7584
Modified: svn:mergeinfo
 - /branches/v0_91_maint:5753-5771
/branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint:5753-5771
/branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Copied: trunk/matplotlib/doc/_static/stinkbug.png (from rev 7584, branches/v0_99_maint/doc/_static/stinkbug.png)
===================================================================
(Binary files differ)
Modified: trunk/matplotlib/doc/_templates/indexsidebar.html
===================================================================
--- trunk/matplotlib/doc/_templates/indexsidebar.html	2009年08月29日 17:48:37 UTC (rev 7584)
+++ trunk/matplotlib/doc/_templates/indexsidebar.html	2009年08月29日 18:14:28 UTC (rev 7585)
@@ -53,7 +53,7 @@
 but it is a good idea to ping us on the mailing list too.</p>
 
 <p>For details on what's new, see the detailed <a href="{{
-pathto('_static/CHANGELOG', 1) }}">changelog</a>. Anything that could
+pathto('_static/CHANGELOG', 1) }}">changelog</a> or browse the <a href="http://matplotlib.svn.sourceforge.net/viewvc/matplotlib/trunk/matplotlib/">source code</a>. Anything that could
 require changes to your existing codes is logged in the <a href="{{
 pathto('api/api_changes.html', 1) }}">api changes</a> file.</p>
 
Modified: trunk/matplotlib/doc/_templates/layout.html
===================================================================
--- trunk/matplotlib/doc/_templates/layout.html	2009年08月29日 17:48:37 UTC (rev 7584)
+++ trunk/matplotlib/doc/_templates/layout.html	2009年08月29日 18:14:28 UTC (rev 7585)
@@ -4,7 +4,7 @@
 {% block rootrellink %}
 <li><a href="{{ pathto('index') }}">home</a>|&nbsp;</li>
 <li><a href="{{ pathto('search') }}">search</a>|&nbsp;</li>
- <li><a href="examples/index.html">examples</a>|&nbsp;</li>
+ <li><a href="http://matplotlib.sf.net/examples/index.html">examples</a>|&nbsp;</li>
 <li><a href="{{ pathto('gallery') }}">gallery</a>|&nbsp;</li>
 <li><a href="{{ pathto('contents') }}">docs</a> &raquo;</li>
 {% endblock %}
Modified: trunk/matplotlib/doc/devel/coding_guide.rst
===================================================================
--- trunk/matplotlib/doc/devel/coding_guide.rst	2009年08月29日 17:48:37 UTC (rev 7584)
+++ trunk/matplotlib/doc/devel/coding_guide.rst	2009年08月29日 18:14:28 UTC (rev 7585)
@@ -1,4 +1,4 @@
-M.. _coding-guide:
+.. _coding-guide:
 
 ************
 Coding guide
Property changes on: trunk/matplotlib/doc/pyplots/README
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint/doc/pyplots/README:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint/doc/pyplots/README:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Property changes on: trunk/matplotlib/doc/sphinxext/gen_gallery.py
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771
/branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint/doc/sphinxext/gen_gallery.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771
/branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint/doc/sphinxext/gen_gallery.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Property changes on: trunk/matplotlib/doc/sphinxext/gen_rst.py
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771
/branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint/doc/sphinxext/gen_rst.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771
/branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint/doc/sphinxext/gen_rst.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Copied: trunk/matplotlib/doc/users/image_tutorial.rst (from rev 7584, branches/v0_99_maint/doc/users/image_tutorial.rst)
===================================================================
--- trunk/matplotlib/doc/users/image_tutorial.rst	 (rev 0)
+++ trunk/matplotlib/doc/users/image_tutorial.rst	2009年08月29日 18:14:28 UTC (rev 7585)
@@ -0,0 +1,324 @@
+.. _image_tutorial:
+
+
+**************
+Image tutorial
+**************
+
+.. _imaging_startup:
+
+Startup commands
+===================
+
+At the very least, you'll need to have access to the :func:`~matplotlib.pyplot.imshow` function. There are a couple of ways to do it. The easy way for an interactive environment::
+
+ $ipython -pylab 
+ 
+The imshow function is now directly accessible (it's in your
+`namespace <http://bytebaker.com/2008/07/30/python-namespaces/>`_).
+See also :ref:`pyplot-tutorial`.
+
+The more expressive, easier to understand later method (use this in
+your scripts to make it easier for others (including your future self)
+to read) is to use the matplotlib API (see :ref:`artist-tutorial`) where you use explicit namespaces and control object creation, etc...
+
+.. sourcecode:: ipython
+
+ In [1]: import matplotlib.pyplot as plt
+ In [2]: import matplotlib.image as mpimg
+ In [3]: import numpy as np
+
+Examples below will use the latter method, for clarity. In these examples, if you use the -pylab method, you can skip the "mpimg." and "plt." prefixes.
+
+.. _importing_data:
+
+Importing image data into Numpy arrays
+===============================================
+
+Plotting image data is supported by the Python Image Library (`PIL <http://www.pythonware.com/products/pil/>`_), . Natively, matplotlib only supports PNG images. The commands shown below fall back on PIL if the native read fails.
+
+The image used in this example is a PNG file, but keep that PIL requirement in mind for your own data.
+
+Here's the image we're going to play with:
+
+.. image:: ../_static/stinkbug.png
+
+It's a 24-bit RGB PNG image (8 bits for each of R, G, B). Depending
+on where you get your data, the other kinds of image that you'll most
+likely encounter are RGBA images, which allow for transparency, or
+single-channel grayscale (luminosity) images. You can right click on
+it and choose "Save image as" to download it to your computer for the
+rest of this tutorial.
+
+And here we go...
+
+.. sourcecode:: ipython
+
+ In [4]: img=mpimg.imread('stinkbug.png')
+ Out[4]: 
+ array([[[ 0.40784314, 0.40784314, 0.40784314],
+ [ 0.40784314, 0.40784314, 0.40784314],
+ [ 0.40784314, 0.40784314, 0.40784314],
+ ..., 
+ [ 0.42745098, 0.42745098, 0.42745098],
+ [ 0.42745098, 0.42745098, 0.42745098],
+ [ 0.42745098, 0.42745098, 0.42745098]],
+
+ [[ 0.41176471, 0.41176471, 0.41176471],
+ [ 0.41176471, 0.41176471, 0.41176471],
+ [ 0.41176471, 0.41176471, 0.41176471],
+ ..., 
+ [ 0.42745098, 0.42745098, 0.42745098],
+ [ 0.42745098, 0.42745098, 0.42745098],
+ [ 0.42745098, 0.42745098, 0.42745098]],
+
+ [[ 0.41960785, 0.41960785, 0.41960785],
+ [ 0.41568628, 0.41568628, 0.41568628],
+ [ 0.41568628, 0.41568628, 0.41568628],
+ ..., 
+ [ 0.43137255, 0.43137255, 0.43137255],
+ [ 0.43137255, 0.43137255, 0.43137255],
+ [ 0.43137255, 0.43137255, 0.43137255]],
+
+ ..., 
+ [[ 0.43921569, 0.43921569, 0.43921569],
+ [ 0.43529412, 0.43529412, 0.43529412],
+ [ 0.43137255, 0.43137255, 0.43137255],
+ ..., 
+ [ 0.45490196, 0.45490196, 0.45490196],
+ [ 0.4509804 , 0.4509804 , 0.4509804 ],
+ [ 0.4509804 , 0.4509804 , 0.4509804 ]],
+
+ [[ 0.44313726, 0.44313726, 0.44313726],
+ [ 0.44313726, 0.44313726, 0.44313726],
+ [ 0.43921569, 0.43921569, 0.43921569],
+ ..., 
+ [ 0.4509804 , 0.4509804 , 0.4509804 ],
+ [ 0.44705883, 0.44705883, 0.44705883],
+ [ 0.44705883, 0.44705883, 0.44705883]],
+
+ [[ 0.44313726, 0.44313726, 0.44313726],
+ [ 0.4509804 , 0.4509804 , 0.4509804 ],
+ [ 0.4509804 , 0.4509804 , 0.4509804 ],
+ ..., 
+ [ 0.44705883, 0.44705883, 0.44705883],
+ [ 0.44705883, 0.44705883, 0.44705883],
+ [ 0.44313726, 0.44313726, 0.44313726]]], dtype=float32)
+
+Note the dtype there - float32. Matplotlib has rescaled the 8 bit data from each channel to floating point data between 0.0 and 1.0. As a side note, the only datatype that PIL can work with is uint8. Matplotlib plotting can handle float32 and uint8, but image reading/writing for any format other than PNG is limited to uint8 data. Why 8 bits? Most displays can only render 8 bits per channel worth of color gradation. Why can they only render 8 bits/channel? Because that's about all the human eye can see. More here (from a photography standpoint): `Luminous Landscape bit depth tutorial <http://www.luminous-landscape.com/tutorials/bit-depth.shtml>`_ 
+
+Each inner list represents a pixel. Here, with an RGB image, there are 3 values. Since it's a black and white image, R, G, and B are all similar. An RGBA (where A is alpha, or transparency), has 4 values per inner list, and a simple luminance image just has one value (and is thus only a 2-D array, not a 3-D array). For RGB and RGBA images, matplotlib supports float32 and uint8 data types. For grayscale, matplotlib supports only float32. If your array data does not meet one of these descriptions, you need to rescale it.
+
+.. _plotting_data:
+
+Plotting numpy arrays as images
+===================================
+
+So, you have your data in a numpy array (either by importing it, or by generating it). Let's render it. In Matplotlib, this is performed using the :func:`~matplotlib.pyplot.imshow` function. Here we'll grab the plot object. This object gives you an easy way to manipulate the plot from the prompt.
+
+.. sourcecode:: ipython
+
+ In [5]: imgplot = plt.imshow(img)
+ 
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ img = mpimg.imread('_static/stinkbug.png')
+ imgplot = plt.imshow(img)
+
+You can also plot any numpy array - just remember that the datatype must be float32 (and range from 0.0 to 1.0) or uint8.
+
+.. _Pseudocolor:
+ 
+Applying pseudocolor schemes to image plots
+-------------------------------------------------
+
+Pseudocolor can be a useful tool for enhancing contrast and visualizing your data more easily. This is especially useful when making presentations of your data using projectors - their contrast is typically quite poor. 
+
+Pseudocolor is only relevant to single-channel, grayscale, luminosity images. We currently have an RGB image. Since R, G, and B are all similar (see for yourself above or in your data), we can just pick on channel of our data:
+
+.. sourcecode:: ipython
+
+ In [6]: lum_img = img[:,:,0]
+ 
+This is array slicing. You can read more `here <http://www.scipy.org/Tentative_NumPy_Tutorial>`_
+ 
+.. sourcecode:: ipython
+
+ In [7]: imgplot = mpimg.imshow(lum_img)
+
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ img = mpimg.imread('_static/stinkbug.png')
+ lum_img = img[:,:,0]
+ plt.imshow(lum_img)
+
+Now, with a luminosity image, the default colormap (aka lookup table, LUT), is applied. The default is called jet. There are plenty of others to choose from. Let's set some others using the :meth:`~matplotlib.image.Image.set_cmap` method on our image plot object:
+
+.. sourcecode:: ipython
+
+ In [8]: imgplot.set_cmap('hot')
+
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ img = mpimg.imread('_static/stinkbug.png')
+ lum_img = img[:,:,0]
+ imgplot = plt.imshow(lum_img)
+ imgplot.set_cmap('hot')
+ 
+.. sourcecode:: ipython
+
+ In [9]: imgplot.set_cmap('spectral')
+ 
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ img = mpimg.imread('_static/stinkbug.png')
+ lum_img = img[:,:,0]
+ imgplot = plt.imshow(lum_img)
+ imgplot.set_cmap('spectral')
+
+There are many other colormap schemes available. See a list and images of the colormaps `here <http://matplotlib.sourceforge.net/examples/pylab_examples/show_colormaps.html>`_
+ 
+.. _Color Bars
+
+Color scale reference
+------------------------
+
+It's helpful to have an idea of what value a color represents. We can do that by adding color bars. It's as easy as one line:
+
+.. sourcecode:: ipython
+ In [10]: plt.colorbar()
+ 
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ img = mpimg.imread('_static/stinkbug.png')
+ lum_img = img[:,:,0]
+ imgplot = plt.imshow(lum_img)
+ imgplot.set_cmap('spectral')
+ plt.colorbar()
+ 
+This adds a colorbar to your existing figure. This won't automatically change if you change you switch to a different colormap - you have to re-create your plot, and add in the colorbar again.
+
+.. _Data ranges
+
+Examining a specific data range
+---------------------------------
+
+Sometimes you want to enhance the contrast in your image, or expand the contrast in a particular region while sacrificing the detail in colors that don't vary much, or don't matter. A good tool to find interesting regions is the histogram. To create a histogram of our image data, we use the :func:`~matplotlib.pyplot.hist` function.
+
+.. sourcecode:: ipython
+
+ In[10]: plt.hist(lum_img)
+
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ img = mpimg.imread('_static/stinkbug.png')
+ lum_img = img[:,:,0]
+ plt.hist(lum_img, range=(0.0,1.0))
+
+Most often, the "interesting" part of the image is around the peak, and you can get extra contrast by clipping the regions above and/or below the peak. In our histogram, it looks like there's not much useful information in the high end (not many white things in the image). Let's adjust the upper limit, so that we effectively "zoom in on" part of the histogram. We do this by calling the :meth:`~matplotlib.image.Image.set_clim` method of the image plot object.
+
+.. sourcecode:: ipython
+
+ In[11]: imgplot.set_clim=(0.0,0.7)
+
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ fig = plt.figure()
+ a=fig.add_subplot(1,2,1)
+ img = mpimg.imread('_static/stinkbug.png')
+ lum_img = img[:,:,0]
+ imgplot = plt.imshow(lum_img)
+ a.set_title('Before') 
+ plt.colorbar(ticks=[0.1,0.3,0.5,0.7], orientation ='horizontal') 
+ a=fig.add_subplot(1,2,2)
+ imgplot = plt.imshow(lum_img)
+ imgplot.set_clim(0.0,0.7)
+ a.set_title('After')
+ plt.colorbar(ticks=[0.1,0.3,0.5,0.7], orientation='horizontal')
+
+.. _Interpolation:
+
+Array Interpolation schemes
+-----------------------------------
+Interpolation calculates what the color or value of a pixel "should" be, according to different mathematical schemes. One common place that this happens is when you resize an image. The number of pixels change, but you want the same information. Since pixels are discrete, there's missing space. Interpolation is how you fill that space. This is why your images sometimes come out looking pixelated when you blow them up. The effect is more pronounced when the difference between the original image and the expanded image is greater. Let's take our image and shrink it. We're effectively discarding pixels, only keeping a select few. Now when we plot it, that data gets blown up to the size on your screen. The old pixels aren't there anymore, and the computer has to draw in pixels to fill that space.
+
+.. sourcecode:: ipython
+
+ In [8]: import Image
+ In [9]: img = Image.open('stinkbug.png') # Open image as PIL image object
+ In [10]: rsize = img.resize((img.size[0]/10,img.size[1]/10)) # Use PIL to resize
+ In [11]: rsizeArr = np.asarray(rsize) # Get array back
+ In [12]: imgplot = mpimg.imshow(rsizeArr)
+
+.. plot::
+ 
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ import Image
+ img = Image.open('_static/stinkbug.png') # opens the file using PIL - it's not an array yet
+ rsize = img.resize((img.size[0]/10,img.size[1]/10)) # resize the image
+ rsizeArr = np.asarray(rsize)
+ lum_img = rsizeArr[:,:,0]
+ imgplot = plt.imshow(rsizeArr)
+
+Here we have the default interpolation, bilinear, since we did not give :func:`~matplotlib.pyplot.imshow` any interpolation argument.
+
+Let's try some others:
+
+.. sourcecode:: ipython
+
+ In [10]: imgplot.set_interpolation('nearest')
+
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ import Image
+ img = Image.open('_static/stinkbug.png') # opens the file using PIL - it's not an array yet
+ rsize = img.resize((img.size[0]/10,img.size[1]/10)) # resize the image
+ rsizeArr = np.asarray(rsize)
+ lum_img = rsizeArr[:,:,0]
+ imgplot = plt.imshow(rsizeArr)
+ imgplot.set_interpolation('nearest') 
+ 
+.. sourcecode:: ipython
+ 
+ In [10]: imgplot.set_interpolation('bicubic')
+
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ import Image
+ img = Image.open('_static/stinkbug.png') # opens the file using PIL - it's not an array yet
+ rsize = img.resize((img.size[0]/10,img.size[1]/10)) # resize the image
+ rsizeArr = np.asarray(rsize)
+ lum_img = rsizeArr[:,:,0]
+ imgplot = plt.imshow(rsizeArr)
+ imgplot.set_interpolation('bicubic')
+ 
+Bicubic interpolation is often used when blowing up photos - people tend to prefer blurry over pixelated.
\ No newline at end of file
Modified: trunk/matplotlib/doc/users/index.rst
===================================================================
--- trunk/matplotlib/doc/users/index.rst	2009年08月29日 17:48:37 UTC (rev 7584)
+++ trunk/matplotlib/doc/users/index.rst	2009年08月29日 18:14:28 UTC (rev 7585)
@@ -19,6 +19,7 @@
 customizing.rst
 shell.rst
 index_text.rst
+ image_tutorial.rst
 artists.rst
 legend_guide.rst
 event_handling.rst
Modified: trunk/matplotlib/doc/users/transforms_tutorial.rst
===================================================================
--- trunk/matplotlib/doc/users/transforms_tutorial.rst	2009年08月29日 17:48:37 UTC (rev 7584)
+++ trunk/matplotlib/doc/users/transforms_tutorial.rst	2009年08月29日 18:14:28 UTC (rev 7585)
@@ -1,4 +1,4 @@
-.. _transformstutorial:
+.. _transforms_tutorial:
 
 **************************
 Transformations Tutorial
Modified: trunk/matplotlib/doc/users/whats_new.rst
===================================================================
--- trunk/matplotlib/doc/users/whats_new.rst	2009年08月29日 17:48:37 UTC (rev 7584)
+++ trunk/matplotlib/doc/users/whats_new.rst	2009年08月29日 18:14:28 UTC (rev 7585)
@@ -12,6 +12,16 @@
 
 .. _whats-new-mplot3d:
 
+New documentation
+-----------------
+
+Jae-Joon Lee has written two new guides :ref:`plotting-guide-legend`
+and :ref:`plotting-guide-annotation`. Michael Sarahan has written
+:ref:`image_tutorial`. John Hunter has written two new tutorials on
+working with paths and transformations: :ref:`path_tutorial` and
+:ref:`transforms_tutorial`.
+
+
 mplot3d
 --------
 
@@ -53,12 +63,6 @@
 .. plot:: pyplots/whats_new_99_spines.py
 
 
-New documentation
------------------
-
-jae-Joon Lee has written two new guides :ref:`plotting-guide-legend`
-and :ref:`plotting-guide-annotation`.
-
 .. _whats-new-0-98-4:
 
 new in 0.98.4
Property changes on: trunk/matplotlib/examples/misc/multiprocess.py
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_91_maint/examples/misc/log.py:5753-5771
/branches/v0_98_5_maint/examples/misc/log.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/misc/multiprocess.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint/examples/misc/log.py:5753-5771
/branches/v0_98_5_maint/examples/misc/log.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/misc/multiprocess.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Property changes on: trunk/matplotlib/examples/mplot3d/contour3d_demo.py
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_91_maint/examples/mplot3d/contour.py:5753-5771
/branches/v0_98_5_maint/examples/mplot3d/contour.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/mplot3d/contour3d_demo.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint/examples/mplot3d/contour.py:5753-5771
/branches/v0_98_5_maint/examples/mplot3d/contour.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/mplot3d/contour3d_demo.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Property changes on: trunk/matplotlib/examples/mplot3d/contourf3d_demo.py
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_91_maint/examples/mplot3d/contourf.py:5753-5771
/branches/v0_98_5_maint/examples/mplot3d/contourf.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/mplot3d/contourf3d_demo.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint/examples/mplot3d/contourf.py:5753-5771
/branches/v0_98_5_maint/examples/mplot3d/contourf.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/mplot3d/contourf3d_demo.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Property changes on: trunk/matplotlib/examples/mplot3d/polys3d_demo.py
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_91_maint/examples/mplot3d/polys.py:5753-5771
/branches/v0_98_5_maint/examples/mplot3d/polys.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/mplot3d/polys3d_demo.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint/examples/mplot3d/polys.py:5753-5771
/branches/v0_98_5_maint/examples/mplot3d/polys.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/mplot3d/polys3d_demo.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Property changes on: trunk/matplotlib/examples/mplot3d/scatter3d_demo.py
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_91_maint/examples/mplot3d/scatter.py:5753-5771
/branches/v0_98_5_maint/examples/mplot3d/scatter.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/mplot3d/scatter3d_demo.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint/examples/mplot3d/scatter.py:5753-5771
/branches/v0_98_5_maint/examples/mplot3d/scatter.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/mplot3d/scatter3d_demo.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Property changes on: trunk/matplotlib/examples/mplot3d/surface3d_demo.py
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_91_maint/examples/mplot3d/surface.py:5753-5771
/branches/v0_98_5_maint/examples/mplot3d/surface.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/mplot3d/surface3d_demo.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint/examples/mplot3d/surface.py:5753-5771
/branches/v0_98_5_maint/examples/mplot3d/surface.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/mplot3d/surface3d_demo.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Property changes on: trunk/matplotlib/examples/mplot3d/wire3d_demo.py
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_91_maint/examples/mplot3d/wire.py:5753-5771
/branches/v0_98_5_maint/examples/mplot3d/wire.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/mplot3d/wire3d_demo.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint/examples/mplot3d/wire.py:5753-5771
/branches/v0_98_5_maint/examples/mplot3d/wire.py:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080
/branches/v0_99_maint/examples/mplot3d/wire3d_demo.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py	2009年08月29日 17:48:37 UTC (rev 7584)
+++ trunk/matplotlib/lib/matplotlib/axes.py	2009年08月29日 18:14:28 UTC (rev 7585)
@@ -3615,6 +3615,7 @@
 }
 
 self.set_xscale('log', **d)
+ self.set_yscale('linear')
 b = self._hold
 self._hold = True # we've already processed the hold
 l = self.plot(*args, **kwargs)
@@ -3665,6 +3666,7 @@
 'nonposy': kwargs.pop('nonposy', 'mask'),
 }
 self.set_yscale('log', **d)
+ self.set_xscale('linear')
 b = self._hold
 self._hold = True # we've already processed the hold
 l = self.plot(*args, **kwargs)
Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771
/branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint/lib/matplotlib/sphinxext/mathmpl.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771
/branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint/lib/matplotlib/sphinxext/mathmpl.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771
/branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint/lib/matplotlib/sphinxext/only_directives.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771
/branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint/lib/matplotlib/sphinxext/only_directives.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py
___________________________________________________________________
Modified: svn:mergeinfo
 - /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771
/branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint/lib/matplotlib/sphinxext/plot_directive.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569
 + /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771
/branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018,7024-7025,7033,7035,7042,7072,7080,7176,7209-7211,7227,7245
/branches/v0_99_maint/lib/matplotlib/sphinxext/plot_directive.py:7338,7393,7395-7404,7407-7424,7428-7433,7442-7444,7446,7475-7482,7484,7486,7489-7523,7567,7569,7582-7584
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <ef...@us...> - 2009年08月29日 17:48:44
Revision: 7584
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7584&view=rev
Author: efiring
Date: 2009年08月29日 17:48:37 +0000 (2009年8月29日)
Log Message:
-----------
Semilogx, semilogy ensure one axis is linear; patch by Tony Yu
Modified Paths:
--------------
 branches/v0_99_maint/lib/matplotlib/axes.py
Modified: branches/v0_99_maint/lib/matplotlib/axes.py
===================================================================
--- branches/v0_99_maint/lib/matplotlib/axes.py	2009年08月29日 16:46:44 UTC (rev 7583)
+++ branches/v0_99_maint/lib/matplotlib/axes.py	2009年08月29日 17:48:37 UTC (rev 7584)
@@ -3601,6 +3601,7 @@
 }
 
 self.set_xscale('log', **d)
+ self.set_yscale('linear')
 b = self._hold
 self._hold = True # we've already processed the hold
 l = self.plot(*args, **kwargs)
@@ -3651,6 +3652,7 @@
 'nonposy': kwargs.pop('nonposy', 'mask'),
 }
 self.set_yscale('log', **d)
+ self.set_xscale('linear')
 b = self._hold
 self._hold = True # we've already processed the hold
 l = self.plot(*args, **kwargs)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7583
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7583&view=rev
Author: jdh2358
Date: 2009年08月29日 16:46:44 +0000 (2009年8月29日)
Log Message:
-----------
minor tweaks to the image tut
Modified Paths:
--------------
 branches/v0_99_maint/doc/users/image_tutorial.rst
Modified: branches/v0_99_maint/doc/users/image_tutorial.rst
===================================================================
--- branches/v0_99_maint/doc/users/image_tutorial.rst	2009年08月29日 16:35:35 UTC (rev 7582)
+++ branches/v0_99_maint/doc/users/image_tutorial.rst	2009年08月29日 16:46:44 UTC (rev 7583)
@@ -12,16 +12,16 @@
 
 At the very least, you'll need to have access to the :func:`~matplotlib.pyplot.imshow` function. There are a couple of ways to do it. The easy way for an interactive environment::
 
- $ipython -pylab -wthread
+ $ipython -pylab 
 
 The imshow function is now directly accessible (it's in your
 `namespace <http://bytebaker.com/2008/07/30/python-namespaces/>`_).
 See also :ref:`pyplot-tutorial`.
 
-The more expressive, easier to understand later method (use this in your scripts to make it easier for others (including your future self) to read)::
+The more expressive, easier to understand later method (use this in
+your scripts to make it easier for others (including your future self)
+to read) is to use the matplotlib API (see :ref:`artist-tutorial`) where you use explicit namespaces and control object creation, etc...
 
- $ipython -wthread
- 
 .. sourcecode:: ipython
 
 In [1]: import matplotlib.pyplot as plt
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <jd...@us...> - 2009年08月29日 16:35:46
Revision: 7582
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7582&view=rev
Author: jdh2358
Date: 2009年08月29日 16:35:35 +0000 (2009年8月29日)
Log Message:
-----------
added Michael Sarahan's image tutorial from the scipy mpl sprint
Modified Paths:
--------------
 branches/v0_99_maint/doc/_templates/indexsidebar.html
 branches/v0_99_maint/doc/_templates/layout.html
 branches/v0_99_maint/doc/devel/coding_guide.rst
 branches/v0_99_maint/doc/users/index.rst
 branches/v0_99_maint/doc/users/transforms_tutorial.rst
 branches/v0_99_maint/doc/users/whats_new.rst
Added Paths:
-----------
 branches/v0_99_maint/doc/_static/stinkbug.png
 branches/v0_99_maint/doc/users/image_tutorial.rst
Added: branches/v0_99_maint/doc/_static/stinkbug.png
===================================================================
(Binary files differ)
Property changes on: branches/v0_99_maint/doc/_static/stinkbug.png
___________________________________________________________________
Added: svn:mime-type
 + application/octet-stream
Modified: branches/v0_99_maint/doc/_templates/indexsidebar.html
===================================================================
--- branches/v0_99_maint/doc/_templates/indexsidebar.html	2009年08月28日 12:20:11 UTC (rev 7581)
+++ branches/v0_99_maint/doc/_templates/indexsidebar.html	2009年08月29日 16:35:35 UTC (rev 7582)
@@ -52,7 +52,7 @@
 but it is a good idea to ping us on the mailing list too.</p>
 
 <p>For details on what's new, see the detailed <a href="{{
-pathto('_static/CHANGELOG', 1) }}">changelog</a>. Anything that could
+pathto('_static/CHANGELOG', 1) }}">changelog</a> or browse the <a href="http://matplotlib.svn.sourceforge.net/viewvc/matplotlib/trunk/matplotlib/">source code</a>. Anything that could
 require changes to your existing codes is logged in the <a href="{{
 pathto('api/api_changes.html', 1) }}">api changes</a> file.</p>
 
Modified: branches/v0_99_maint/doc/_templates/layout.html
===================================================================
--- branches/v0_99_maint/doc/_templates/layout.html	2009年08月28日 12:20:11 UTC (rev 7581)
+++ branches/v0_99_maint/doc/_templates/layout.html	2009年08月29日 16:35:35 UTC (rev 7582)
@@ -4,7 +4,7 @@
 {% block rootrellink %}
 <li><a href="{{ pathto('index') }}">home</a>|&nbsp;</li>
 <li><a href="{{ pathto('search') }}">search</a>|&nbsp;</li>
- <li><a href="examples/index.html">examples</a>|&nbsp;</li>
+ <li><a href="http://matplotlib.sf.net/examples/index.html">examples</a>|&nbsp;</li>
 <li><a href="{{ pathto('gallery') }}">gallery</a>|&nbsp;</li>
 <li><a href="{{ pathto('contents') }}">docs</a> &raquo;</li>
 {% endblock %}
Modified: branches/v0_99_maint/doc/devel/coding_guide.rst
===================================================================
--- branches/v0_99_maint/doc/devel/coding_guide.rst	2009年08月28日 12:20:11 UTC (rev 7581)
+++ branches/v0_99_maint/doc/devel/coding_guide.rst	2009年08月29日 16:35:35 UTC (rev 7582)
@@ -1,4 +1,4 @@
-M.. _coding-guide:
+.. _coding-guide:
 
 ************
 Coding guide
Added: branches/v0_99_maint/doc/users/image_tutorial.rst
===================================================================
--- branches/v0_99_maint/doc/users/image_tutorial.rst	 (rev 0)
+++ branches/v0_99_maint/doc/users/image_tutorial.rst	2009年08月29日 16:35:35 UTC (rev 7582)
@@ -0,0 +1,324 @@
+.. _image_tutorial:
+
+
+**************
+Image tutorial
+**************
+
+.. _imaging_startup:
+
+Startup commands
+===================
+
+At the very least, you'll need to have access to the :func:`~matplotlib.pyplot.imshow` function. There are a couple of ways to do it. The easy way for an interactive environment::
+
+ $ipython -pylab -wthread
+ 
+The imshow function is now directly accessible (it's in your
+`namespace <http://bytebaker.com/2008/07/30/python-namespaces/>`_).
+See also :ref:`pyplot-tutorial`.
+
+The more expressive, easier to understand later method (use this in your scripts to make it easier for others (including your future self) to read)::
+
+ $ipython -wthread
+ 
+.. sourcecode:: ipython
+
+ In [1]: import matplotlib.pyplot as plt
+ In [2]: import matplotlib.image as mpimg
+ In [3]: import numpy as np
+
+Examples below will use the latter method, for clarity. In these examples, if you use the -pylab method, you can skip the "mpimg." and "plt." prefixes.
+
+.. _importing_data:
+
+Importing image data into Numpy arrays
+===============================================
+
+Plotting image data is supported by the Python Image Library (`PIL <http://www.pythonware.com/products/pil/>`_), . Natively, matplotlib only supports PNG images. The commands shown below fall back on PIL if the native read fails.
+
+The image used in this example is a PNG file, but keep that PIL requirement in mind for your own data.
+
+Here's the image we're going to play with:
+
+.. image:: ../_static/stinkbug.png
+
+It's a 24-bit RGB PNG image (8 bits for each of R, G, B). Depending
+on where you get your data, the other kinds of image that you'll most
+likely encounter are RGBA images, which allow for transparency, or
+single-channel grayscale (luminosity) images. You can right click on
+it and choose "Save image as" to download it to your computer for the
+rest of this tutorial.
+
+And here we go...
+
+.. sourcecode:: ipython
+
+ In [4]: img=mpimg.imread('stinkbug.png')
+ Out[4]: 
+ array([[[ 0.40784314, 0.40784314, 0.40784314],
+ [ 0.40784314, 0.40784314, 0.40784314],
+ [ 0.40784314, 0.40784314, 0.40784314],
+ ..., 
+ [ 0.42745098, 0.42745098, 0.42745098],
+ [ 0.42745098, 0.42745098, 0.42745098],
+ [ 0.42745098, 0.42745098, 0.42745098]],
+
+ [[ 0.41176471, 0.41176471, 0.41176471],
+ [ 0.41176471, 0.41176471, 0.41176471],
+ [ 0.41176471, 0.41176471, 0.41176471],
+ ..., 
+ [ 0.42745098, 0.42745098, 0.42745098],
+ [ 0.42745098, 0.42745098, 0.42745098],
+ [ 0.42745098, 0.42745098, 0.42745098]],
+
+ [[ 0.41960785, 0.41960785, 0.41960785],
+ [ 0.41568628, 0.41568628, 0.41568628],
+ [ 0.41568628, 0.41568628, 0.41568628],
+ ..., 
+ [ 0.43137255, 0.43137255, 0.43137255],
+ [ 0.43137255, 0.43137255, 0.43137255],
+ [ 0.43137255, 0.43137255, 0.43137255]],
+
+ ..., 
+ [[ 0.43921569, 0.43921569, 0.43921569],
+ [ 0.43529412, 0.43529412, 0.43529412],
+ [ 0.43137255, 0.43137255, 0.43137255],
+ ..., 
+ [ 0.45490196, 0.45490196, 0.45490196],
+ [ 0.4509804 , 0.4509804 , 0.4509804 ],
+ [ 0.4509804 , 0.4509804 , 0.4509804 ]],
+
+ [[ 0.44313726, 0.44313726, 0.44313726],
+ [ 0.44313726, 0.44313726, 0.44313726],
+ [ 0.43921569, 0.43921569, 0.43921569],
+ ..., 
+ [ 0.4509804 , 0.4509804 , 0.4509804 ],
+ [ 0.44705883, 0.44705883, 0.44705883],
+ [ 0.44705883, 0.44705883, 0.44705883]],
+
+ [[ 0.44313726, 0.44313726, 0.44313726],
+ [ 0.4509804 , 0.4509804 , 0.4509804 ],
+ [ 0.4509804 , 0.4509804 , 0.4509804 ],
+ ..., 
+ [ 0.44705883, 0.44705883, 0.44705883],
+ [ 0.44705883, 0.44705883, 0.44705883],
+ [ 0.44313726, 0.44313726, 0.44313726]]], dtype=float32)
+
+Note the dtype there - float32. Matplotlib has rescaled the 8 bit data from each channel to floating point data between 0.0 and 1.0. As a side note, the only datatype that PIL can work with is uint8. Matplotlib plotting can handle float32 and uint8, but image reading/writing for any format other than PNG is limited to uint8 data. Why 8 bits? Most displays can only render 8 bits per channel worth of color gradation. Why can they only render 8 bits/channel? Because that's about all the human eye can see. More here (from a photography standpoint): `Luminous Landscape bit depth tutorial <http://www.luminous-landscape.com/tutorials/bit-depth.shtml>`_ 
+
+Each inner list represents a pixel. Here, with an RGB image, there are 3 values. Since it's a black and white image, R, G, and B are all similar. An RGBA (where A is alpha, or transparency), has 4 values per inner list, and a simple luminance image just has one value (and is thus only a 2-D array, not a 3-D array). For RGB and RGBA images, matplotlib supports float32 and uint8 data types. For grayscale, matplotlib supports only float32. If your array data does not meet one of these descriptions, you need to rescale it.
+
+.. _plotting_data:
+
+Plotting numpy arrays as images
+===================================
+
+So, you have your data in a numpy array (either by importing it, or by generating it). Let's render it. In Matplotlib, this is performed using the :func:`~matplotlib.pyplot.imshow` function. Here we'll grab the plot object. This object gives you an easy way to manipulate the plot from the prompt.
+
+.. sourcecode:: ipython
+
+ In [5]: imgplot = plt.imshow(img)
+ 
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ img = mpimg.imread('_static/stinkbug.png')
+ imgplot = plt.imshow(img)
+
+You can also plot any numpy array - just remember that the datatype must be float32 (and range from 0.0 to 1.0) or uint8.
+
+.. _Pseudocolor:
+ 
+Applying pseudocolor schemes to image plots
+-------------------------------------------------
+
+Pseudocolor can be a useful tool for enhancing contrast and visualizing your data more easily. This is especially useful when making presentations of your data using projectors - their contrast is typically quite poor. 
+
+Pseudocolor is only relevant to single-channel, grayscale, luminosity images. We currently have an RGB image. Since R, G, and B are all similar (see for yourself above or in your data), we can just pick on channel of our data:
+
+.. sourcecode:: ipython
+
+ In [6]: lum_img = img[:,:,0]
+ 
+This is array slicing. You can read more `here <http://www.scipy.org/Tentative_NumPy_Tutorial>`_
+ 
+.. sourcecode:: ipython
+
+ In [7]: imgplot = mpimg.imshow(lum_img)
+
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ img = mpimg.imread('_static/stinkbug.png')
+ lum_img = img[:,:,0]
+ plt.imshow(lum_img)
+
+Now, with a luminosity image, the default colormap (aka lookup table, LUT), is applied. The default is called jet. There are plenty of others to choose from. Let's set some others using the :meth:`~matplotlib.image.Image.set_cmap` method on our image plot object:
+
+.. sourcecode:: ipython
+
+ In [8]: imgplot.set_cmap('hot')
+
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ img = mpimg.imread('_static/stinkbug.png')
+ lum_img = img[:,:,0]
+ imgplot = plt.imshow(lum_img)
+ imgplot.set_cmap('hot')
+ 
+.. sourcecode:: ipython
+
+ In [9]: imgplot.set_cmap('spectral')
+ 
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ img = mpimg.imread('_static/stinkbug.png')
+ lum_img = img[:,:,0]
+ imgplot = plt.imshow(lum_img)
+ imgplot.set_cmap('spectral')
+
+There are many other colormap schemes available. See a list and images of the colormaps `here <http://matplotlib.sourceforge.net/examples/pylab_examples/show_colormaps.html>`_
+ 
+.. _Color Bars
+
+Color scale reference
+------------------------
+
+It's helpful to have an idea of what value a color represents. We can do that by adding color bars. It's as easy as one line:
+
+.. sourcecode:: ipython
+ In [10]: plt.colorbar()
+ 
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ img = mpimg.imread('_static/stinkbug.png')
+ lum_img = img[:,:,0]
+ imgplot = plt.imshow(lum_img)
+ imgplot.set_cmap('spectral')
+ plt.colorbar()
+ 
+This adds a colorbar to your existing figure. This won't automatically change if you change you switch to a different colormap - you have to re-create your plot, and add in the colorbar again.
+
+.. _Data ranges
+
+Examining a specific data range
+---------------------------------
+
+Sometimes you want to enhance the contrast in your image, or expand the contrast in a particular region while sacrificing the detail in colors that don't vary much, or don't matter. A good tool to find interesting regions is the histogram. To create a histogram of our image data, we use the :func:`~matplotlib.pyplot.hist` function.
+
+.. sourcecode:: ipython
+
+ In[10]: plt.hist(lum_img)
+
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ img = mpimg.imread('_static/stinkbug.png')
+ lum_img = img[:,:,0]
+ plt.hist(lum_img, range=(0.0,1.0))
+
+Most often, the "interesting" part of the image is around the peak, and you can get extra contrast by clipping the regions above and/or below the peak. In our histogram, it looks like there's not much useful information in the high end (not many white things in the image). Let's adjust the upper limit, so that we effectively "zoom in on" part of the histogram. We do this by calling the :meth:`~matplotlib.image.Image.set_clim` method of the image plot object.
+
+.. sourcecode:: ipython
+
+ In[11]: imgplot.set_clim=(0.0,0.7)
+
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ fig = plt.figure()
+ a=fig.add_subplot(1,2,1)
+ img = mpimg.imread('_static/stinkbug.png')
+ lum_img = img[:,:,0]
+ imgplot = plt.imshow(lum_img)
+ a.set_title('Before') 
+ plt.colorbar(ticks=[0.1,0.3,0.5,0.7], orientation ='horizontal') 
+ a=fig.add_subplot(1,2,2)
+ imgplot = plt.imshow(lum_img)
+ imgplot.set_clim(0.0,0.7)
+ a.set_title('After')
+ plt.colorbar(ticks=[0.1,0.3,0.5,0.7], orientation='horizontal')
+
+.. _Interpolation:
+
+Array Interpolation schemes
+-----------------------------------
+Interpolation calculates what the color or value of a pixel "should" be, according to different mathematical schemes. One common place that this happens is when you resize an image. The number of pixels change, but you want the same information. Since pixels are discrete, there's missing space. Interpolation is how you fill that space. This is why your images sometimes come out looking pixelated when you blow them up. The effect is more pronounced when the difference between the original image and the expanded image is greater. Let's take our image and shrink it. We're effectively discarding pixels, only keeping a select few. Now when we plot it, that data gets blown up to the size on your screen. The old pixels aren't there anymore, and the computer has to draw in pixels to fill that space.
+
+.. sourcecode:: ipython
+
+ In [8]: import Image
+ In [9]: img = Image.open('stinkbug.png') # Open image as PIL image object
+ In [10]: rsize = img.resize((img.size[0]/10,img.size[1]/10)) # Use PIL to resize
+ In [11]: rsizeArr = np.asarray(rsize) # Get array back
+ In [12]: imgplot = mpimg.imshow(rsizeArr)
+
+.. plot::
+ 
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ import Image
+ img = Image.open('_static/stinkbug.png') # opens the file using PIL - it's not an array yet
+ rsize = img.resize((img.size[0]/10,img.size[1]/10)) # resize the image
+ rsizeArr = np.asarray(rsize)
+ lum_img = rsizeArr[:,:,0]
+ imgplot = plt.imshow(rsizeArr)
+
+Here we have the default interpolation, bilinear, since we did not give :func:`~matplotlib.pyplot.imshow` any interpolation argument.
+
+Let's try some others:
+
+.. sourcecode:: ipython
+
+ In [10]: imgplot.set_interpolation('nearest')
+
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ import Image
+ img = Image.open('_static/stinkbug.png') # opens the file using PIL - it's not an array yet
+ rsize = img.resize((img.size[0]/10,img.size[1]/10)) # resize the image
+ rsizeArr = np.asarray(rsize)
+ lum_img = rsizeArr[:,:,0]
+ imgplot = plt.imshow(rsizeArr)
+ imgplot.set_interpolation('nearest') 
+ 
+.. sourcecode:: ipython
+ 
+ In [10]: imgplot.set_interpolation('bicubic')
+
+.. plot::
+
+ import matplotlib.pyplot as plt
+ import matplotlib.image as mpimg
+ import numpy as np
+ import Image
+ img = Image.open('_static/stinkbug.png') # opens the file using PIL - it's not an array yet
+ rsize = img.resize((img.size[0]/10,img.size[1]/10)) # resize the image
+ rsizeArr = np.asarray(rsize)
+ lum_img = rsizeArr[:,:,0]
+ imgplot = plt.imshow(rsizeArr)
+ imgplot.set_interpolation('bicubic')
+ 
+Bicubic interpolation is often used when blowing up photos - people tend to prefer blurry over pixelated.
\ No newline at end of file
Modified: branches/v0_99_maint/doc/users/index.rst
===================================================================
--- branches/v0_99_maint/doc/users/index.rst	2009年08月28日 12:20:11 UTC (rev 7581)
+++ branches/v0_99_maint/doc/users/index.rst	2009年08月29日 16:35:35 UTC (rev 7582)
@@ -19,6 +19,7 @@
 customizing.rst
 shell.rst
 index_text.rst
+ image_tutorial.rst
 artists.rst
 legend_guide.rst
 event_handling.rst
Modified: branches/v0_99_maint/doc/users/transforms_tutorial.rst
===================================================================
--- branches/v0_99_maint/doc/users/transforms_tutorial.rst	2009年08月28日 12:20:11 UTC (rev 7581)
+++ branches/v0_99_maint/doc/users/transforms_tutorial.rst	2009年08月29日 16:35:35 UTC (rev 7582)
@@ -1,4 +1,4 @@
-.. _transformstutorial:
+.. _transforms_tutorial:
 
 **************************
 Transformations Tutorial
Modified: branches/v0_99_maint/doc/users/whats_new.rst
===================================================================
--- branches/v0_99_maint/doc/users/whats_new.rst	2009年08月28日 12:20:11 UTC (rev 7581)
+++ branches/v0_99_maint/doc/users/whats_new.rst	2009年08月29日 16:35:35 UTC (rev 7582)
@@ -12,6 +12,16 @@
 
 .. _whats-new-mplot3d:
 
+New documentation
+-----------------
+
+Jae-Joon Lee has written two new guides :ref:`plotting-guide-legend`
+and :ref:`plotting-guide-annotation`. Michael Sarahan has written
+:ref:`image_tutorial`. John Hunter has written two new tutorials on
+working with paths and transformations: :ref:`path_tutorial` and
+:ref:`transforms_tutorial`.
+
+
 mplot3d
 --------
 
@@ -53,12 +63,6 @@
 .. plot:: pyplots/whats_new_99_spines.py
 
 
-New documentation
------------------
-
-jae-Joon Lee has written two new guides :ref:`plotting-guide-legend`
-and :ref:`plotting-guide-annotation`.
-
 .. _whats-new-0-98-4:
 
 new in 0.98.4
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7581
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7581&view=rev
Author: jswhit
Date: 2009年08月28日 12:20:11 +0000 (2009年8月28日)
Log Message:
-----------
fix typo in comment
Modified Paths:
--------------
 trunk/matplotlib/examples/pylab_examples/shading_example.py
Modified: trunk/matplotlib/examples/pylab_examples/shading_example.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/shading_example.py	2009年08月27日 20:35:07 UTC (rev 7580)
+++ trunk/matplotlib/examples/pylab_examples/shading_example.py	2009年08月28日 12:20:11 UTC (rev 7581)
@@ -4,14 +4,14 @@
 
 # example showing how to make shaded relief plots 
 # like mathematica
-# (http://reference.wolfram.com/mathematica/ref/ReliefPlot.html )
+# (http://reference.wolfram.com/mathematica/ref/ReliefPlot.html)
 # or Generic Mapping Tools
 # (http://gmt.soest.hawaii.edu/gmt/doc/gmt/html/GMT_Docs/node145.html)
 
 # test data
 X,Y=np.mgrid[-5:5:0.05,-5:5:0.05]
 Z=np.sqrt(X**2+Y**2)+np.sin(X**2+Y**2)
-# creat light source object.
+# create light source object.
 ls = LightSource(azdeg=0,altdeg=65)
 # shade data, creating an rgb array.
 rgb = ls.shade(Z,plt.cm.copper)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7580
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7580&view=rev
Author: astraw
Date: 2009年08月27日 20:35:07 +0000 (2009年8月27日)
Log Message:
-----------
correct baseline image (very small tick/spine placement differences)
Modified Paths:
--------------
 trunk/matplotlib/test/test_plots/baseline/TestPlot/shaped_data.png
Modified: trunk/matplotlib/test/test_plots/baseline/TestPlot/shaped_data.png
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7579
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7579&view=rev
Author: astraw
Date: 2009年08月27日 20:32:28 +0000 (2009年8月27日)
Log Message:
-----------
correct baseline image with radial gridlines bug fixed
Modified Paths:
--------------
 trunk/matplotlib/test/test_plots/baseline/TestPolar/polar_wrap_360.png
Modified: trunk/matplotlib/test/test_plots/baseline/TestPolar/polar_wrap_360.png
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7578
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7578&view=rev
Author: astraw
Date: 2009年08月27日 20:30:51 +0000 (2009年8月27日)
Log Message:
-----------
correct baseline image with radial gridlines bug fixed
Modified Paths:
--------------
 trunk/matplotlib/test/test_plots/baseline/TestPolar/polar_wrap_180.png
Modified: trunk/matplotlib/test/test_plots/baseline/TestPolar/polar_wrap_180.png
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7577
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7577&view=rev
Author: jswhit
Date: 2009年08月26日 17:01:34 +0000 (2009年8月26日)
Log Message:
-----------
nightime regions were calculated incorrectly when solar declination < 0
(NH winter).
Modified Paths:
--------------
 trunk/toolkits/basemap/lib/mpl_toolkits/basemap/solar.py
Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/solar.py
===================================================================
--- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/solar.py	2009年08月26日 15:32:59 UTC (rev 7576)
+++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/solar.py	2009年08月26日 17:01:34 UTC (rev 7577)
@@ -48,19 +48,22 @@
 # compute day/night terminator from hour angle, declination.
 longitude = lons + tau
 lats = np.arctan(-np.cos(longitude*dg2rad)/np.tan(dec*dg2rad))/dg2rad
- return lons, lats
+ return lons, lats, tau, dec
 
 def daynight_grid(date, delta, lonmin, lonmax):
 """
 date is datetime object (assumed UTC).
 delta is the grid interval (in degrees) used to compute terminator."""
- lons, lats = daynight_terminator(date, delta, lonmin, lonmax)
+ lons, lats, tau, dec = daynight_terminator(date, delta, lonmin, lonmax)
 # create day/night grid (1 for night, 0 for day)
 lats2 = np.arange(-90,90+0.5*delta,delta,dtype=np.float32)
 nlons = len(lons); nlats = len(lats2)
 lons2, lats2 = np.meshgrid(lons,lats2)
 lats = lats[np.newaxis,:]*np.ones((nlats,nlons),dtype=np.float32)
 daynight = np.ones(lons2.shape, np.int8)
- daynight = np.where(lats2>lats,0,daynight)
+ if dec > 0: # NH summer
+ daynight = np.where(lats2>lats,0,daynight)
+ else: # NH winter
+ daynight = np.where(lats2<lats,0,daynight)
 daynight = ma.array(daynight,mask=1-daynight) # mask day areas.
 return lons2,lats2,daynight
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <js...@us...> - 2009年08月26日 15:33:06
Revision: 7576
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7576&view=rev
Author: jswhit
Date: 2009年08月26日 15:32:59 +0000 (2009年8月26日)
Log Message:
-----------
added mention of new example.
Modified Paths:
--------------
 trunk/toolkits/basemap/Changelog
Modified: trunk/toolkits/basemap/Changelog
===================================================================
--- trunk/toolkits/basemap/Changelog	2009年08月26日 15:29:57 UTC (rev 7575)
+++ trunk/toolkits/basemap/Changelog	2009年08月26日 15:32:59 UTC (rev 7576)
@@ -1,5 +1,6 @@
 version 0.99.5 (not yet released)
 * added 'nightshade' method to shade night regions on a map.
+ 'daynight.py' example added to illustrate usage.
 * added lonmin, lonmax instance variables.
 version 0.99.4 (svn revision 7332)
 * ax.frame replaced with ax.spines to maintain compatibility 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <js...@us...> - 2009年08月26日 15:30:03
Revision: 7575
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7575&view=rev
Author: jswhit
Date: 2009年08月26日 15:29:57 +0000 (2009年8月26日)
Log Message:
-----------
format date in title
Modified Paths:
--------------
 trunk/toolkits/basemap/examples/daynight.py
Modified: trunk/toolkits/basemap/examples/daynight.py
===================================================================
--- trunk/toolkits/basemap/examples/daynight.py	2009年08月26日 11:52:06 UTC (rev 7574)
+++ trunk/toolkits/basemap/examples/daynight.py	2009年08月26日 15:29:57 UTC (rev 7575)
@@ -19,5 +19,5 @@
 # map shows through. Use current time in UTC.
 date = datetime.utcnow()
 CS=map.nightshade(date)
-plt.title('Day/Night Map for %s (UTC)' % date)
+plt.title('Day/Night Map for %s (UTC)' % date.strftime("%d %b %Y %H:%M:%S"))
 plt.show()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7574
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7574&view=rev
Author: jswhit
Date: 2009年08月26日 11:52:06 +0000 (2009年8月26日)
Log Message:
-----------
check that date is utc in nightshade
Modified Paths:
--------------
 trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py
Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py
===================================================================
--- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py	2009年08月26日 11:33:41 UTC (rev 7573)
+++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py	2009年08月26日 11:52:06 UTC (rev 7574)
@@ -3445,6 +3445,9 @@
 returns a matplotlib.contour.ContourSet instance.
 """
 from solar import daynight_grid
+ # make sure date is utc.
+ if date.utcoffset() is not None:
+ raise ValueError('datetime instance must be UTC')
 # create grid of day=0, night=1
 lons,lats,daynight = daynight_grid(date,delta,self.lonmin,self.lonmax)
 x,y = self(lons,lats)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <js...@us...> - 2009年08月26日 11:33:47
Revision: 7573
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7573&view=rev
Author: jswhit
Date: 2009年08月26日 11:33:41 +0000 (2009年8月26日)
Log Message:
-----------
up version number
Modified Paths:
--------------
 trunk/toolkits/basemap/doc/conf.py
Modified: trunk/toolkits/basemap/doc/conf.py
===================================================================
--- trunk/toolkits/basemap/doc/conf.py	2009年08月26日 11:32:41 UTC (rev 7572)
+++ trunk/toolkits/basemap/doc/conf.py	2009年08月26日 11:33:41 UTC (rev 7573)
@@ -46,9 +46,9 @@
 # other places throughout the built documents.
 #
 # The short X.Y version.
-version = '0.99.4'
+version = '0.99.5'
 # The full version, including alpha/beta/rc tags.
-release = '0.99.4'
+release = '0.99.5'
 
 # There are two options for replacing |today|: either, you set today to some
 # non-false value, then it is used:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <js...@us...> - 2009年08月26日 11:32:48
Revision: 7572
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7572&view=rev
Author: jswhit
Date: 2009年08月26日 11:32:41 +0000 (2009年8月26日)
Log Message:
-----------
cosmetic cleanup.
Modified Paths:
--------------
 trunk/toolkits/basemap/examples/daynight.py
Modified: trunk/toolkits/basemap/examples/daynight.py
===================================================================
--- trunk/toolkits/basemap/examples/daynight.py	2009年08月26日 01:12:32 UTC (rev 7571)
+++ trunk/toolkits/basemap/examples/daynight.py	2009年08月26日 11:32:41 UTC (rev 7572)
@@ -5,6 +5,7 @@
 
 # example showing how to compute the day/night terminator and shade nightime
 # areas on a map.
+
 # miller projection 
 map = Basemap(projection='mill',lon_0=180)
 # plot coastlines, draw label meridians and parallels.
@@ -14,9 +15,8 @@
 # fill continents 'coral' (with zorder=0), color wet areas 'aqua'
 map.drawmapboundary(fill_color='aqua')
 map.fillcontinents(color='coral',lake_color='aqua')
-# shade the night areas gray, with alpha transparency so the 
-# map shows through.
-# use current time in UTC.
+# shade the night areas, with alpha transparency so the 
+# map shows through. Use current time in UTC.
 date = datetime.utcnow()
 CS=map.nightshade(date)
 plt.title('Day/Night Map for %s (UTC)' % date)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

Showing results of 296

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





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

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

More information about our ad policies

Ad destination/click URL:

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