Revision: 8010
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8010&view=rev
Author:   leejjoon
Date:     2009-12-07 01:17:16 +0000 (Mon, 07 Dec 2009)

Log Message:
-----------
axes_grid : doc update and new examples

Modified Paths:
--------------
    trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/axes_grid_api.rst
    trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/index.rst
    trunk/matplotlib/doc/mpl_toolkits/axes_grid/users/axislines.rst
    trunk/matplotlib/doc/mpl_toolkits/axes_grid/users/overview.rst

Added Paths:
-----------
    trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/axis_artist_api.rst
    trunk/matplotlib/doc/mpl_toolkits/axes_grid/figures/demo_axis_direction.py
    
trunk/matplotlib/doc/mpl_toolkits/axes_grid/figures/demo_ticklabel_alignment.py
    
trunk/matplotlib/doc/mpl_toolkits/axes_grid/figures/demo_ticklabel_direction.py
    trunk/matplotlib/examples/axes_grid/demo_curvelinear_grid2.py
    trunk/matplotlib/examples/axes_grid/demo_floating_axes.py

Modified: trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/axes_grid_api.rst
===================================================================
--- trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/axes_grid_api.rst   
2009-12-07 01:16:44 UTC (rev 8009)
+++ trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/axes_grid_api.rst   
2009-12-07 01:17:16 UTC (rev 8010)
@@ -2,6 +2,10 @@
 :mod:`mpl_toolkits.axes_grid.axes_grid`
 =======================================
 
-.. autoclass:: mpl_toolkits.axes_grid.axes_grid.AxesGrid
+.. autoclass:: mpl_toolkits.axes_grid.axes_grid.Grid
    :members:
    :undoc-members:
+
+.. autoclass:: mpl_toolkits.axes_grid.axes_grid.ImageGrid
+   :members:
+   :undoc-members:

Added: trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/axis_artist_api.rst
===================================================================
--- trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/axis_artist_api.rst         
                (rev 0)
+++ trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/axis_artist_api.rst 
2009-12-07 01:17:16 UTC (rev 8010)
@@ -0,0 +1,16 @@
+
+:mod:`mpl_toolkits.axes_grid.axis_artist`
+=======================================
+
+.. autoclass:: mpl_toolkits.axes_grid.axis_artist.AxisArtist
+   :members:
+   :undoc-members:
+
+.. autoclass:: mpl_toolkits.axes_grid.axis_artist.Ticks
+   :members:
+
+.. autoclass:: mpl_toolkits.axes_grid.axis_artist.AxisLabel
+   :members:
+
+.. autoclass:: mpl_toolkits.axes_grid.axis_artist.TickLabels
+   :members:

Modified: trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/index.rst
===================================================================
--- trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/index.rst   2009-12-07 
01:16:44 UTC (rev 8009)
+++ trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/index.rst   2009-12-07 
01:17:16 UTC (rev 8010)
@@ -12,3 +12,4 @@
     axes_size_api.rst
     axes_divider_api.rst
     axes_grid_api.rst
+    axis_artist_api.rst

Added: 
trunk/matplotlib/doc/mpl_toolkits/axes_grid/figures/demo_axis_direction.py
===================================================================
--- trunk/matplotlib/doc/mpl_toolkits/axes_grid/figures/demo_axis_direction.py  
                        (rev 0)
+++ trunk/matplotlib/doc/mpl_toolkits/axes_grid/figures/demo_axis_direction.py  
2009-12-07 01:17:16 UTC (rev 8010)
@@ -0,0 +1,98 @@
+
+
+import numpy as np
+import  mpl_toolkits.axes_grid.angle_helper as angle_helper
+import  mpl_toolkits.axes_grid.grid_finder as grid_finder
+from matplotlib.projections import PolarAxes
+from matplotlib.transforms import Affine2D
+
+import mpl_toolkits.axes_grid.axislines as axislines
+
+from mpl_toolkits.axes_grid.grid_helper_curvelinear import 
GridHelperCurveLinear
+
+
+def setup_axes(fig, rect):
+    """
+    polar projection, but in a rectangular box.
+    """
+
+    # see demo_curvelinear_grid.py for details
+    tr = Affine2D().scale(np.pi/180., 1.) + PolarAxes.PolarTransform()
+
+    extreme_finder = angle_helper.ExtremeFinderCycle(20, 20,
+                                                     lon_cycle = 360,
+                                                     lat_cycle = None,
+                                                     lon_minmax = None,
+                                                     lat_minmax = (0, np.inf),
+                                                     )
+
+    grid_locator1 = angle_helper.LocatorDMS(12)
+    grid_locator2 = grid_finder.MaxNLocator(5)
+
+    tick_formatter1 = angle_helper.FormatterDMS()
+
+    grid_helper = GridHelperCurveLinear(tr,
+                                        extreme_finder=extreme_finder,
+                                        grid_locator1=grid_locator1,
+                                        grid_locator2=grid_locator2,
+                                        tick_formatter1=tick_formatter1
+                                        )
+
+
+    ax1 = axislines.Subplot(fig, rect, grid_helper=grid_helper)
+    ax1.axis[:].toggle(ticklabels=False)
+
+    fig.add_subplot(ax1)
+
+    ax1.set_aspect(1.)
+    ax1.set_xlim(-5, 12)
+    ax1.set_ylim(-5, 10)
+
+    #ax1.grid(True)
+
+    return ax1
+
+
+def add_floating_axis1(ax1):
+    ax1.axis["lat"] = axis = ax1.new_floating_axis(0, 30)
+    axis.label.set_text(r"$\theta = 30^{\circ}$")
+    axis.label.set_visible(True)
+
+    return axis
+
+
+def add_floating_axis2(ax1):
+    ax1.axis["lon"] = axis = ax1.new_floating_axis(1, 6)
+    axis.label.set_text(r"$r = 6$")
+    axis.label.set_visible(True)
+
+    return axis
+
+
+import matplotlib.pyplot as plt
+fig = plt.figure(1, figsize=(8, 4.))
+fig.clf()
+fig.subplots_adjust(left=0.01, right=0.99, bottom=0.01, top=0.99,
+                    wspace=0.01, hspace=0.01)
+
+for i, d in enumerate(["bottom", "left", "top", "right"]):
+    ax1 = setup_axes(fig, rect=241++i)
+    axis = add_floating_axis1(ax1)
+    axis.set_axis_direction(d)
+    ax1.annotate(d, (0, 1), (5, -5),
+                 xycoords="axes fraction", textcoords="offset points",
+                 va="top", ha="left")
+
+for i, d in enumerate(["bottom", "left", "top", "right"]):
+    ax1 = setup_axes(fig, rect=245++i)
+    axis = add_floating_axis2(ax1)
+    axis.set_axis_direction(d)
+    ax1.annotate(d, (0, 1), (5, -5),
+                 xycoords="axes fraction", textcoords="offset points",
+                 va="top", ha="left")
+
+
+
+plt.show()
+
+

Added: 
trunk/matplotlib/doc/mpl_toolkits/axes_grid/figures/demo_ticklabel_alignment.py
===================================================================
--- 
trunk/matplotlib/doc/mpl_toolkits/axes_grid/figures/demo_ticklabel_alignment.py 
                            (rev 0)
+++ 
trunk/matplotlib/doc/mpl_toolkits/axes_grid/figures/demo_ticklabel_alignment.py 
    2009-12-07 01:17:16 UTC (rev 8010)
@@ -0,0 +1,38 @@
+
+
+import matplotlib.pyplot as plt
+import mpl_toolkits.axes_grid.axislines as axislines
+
+
+def setup_axes(fig, rect):
+    
+    ax = axislines.Subplot(fig, rect)
+    fig.add_subplot(ax)
+
+    ax.set_yticks([0.2, 0.8])
+    ax.set_yticklabels(["short", "loooong"])
+    ax.set_xticks([0.2, 0.8])
+    ax.set_xticklabels([r"$\frac{1}{2}\pi$", r"$\pi$"])
+
+    return ax
+
+fig = plt.figure(1, figsize=(3, 5))
+fig.subplots_adjust(left=0.5, hspace=0.7)
+
+
+
+ax = setup_axes(fig, 311)
+ax.set_ylabel("ha=right")
+ax.set_xlabel("va=baseline")
+
+ax = setup_axes(fig, 312)
+ax.axis["left"].major_ticklabels.set_ha("center")
+ax.axis["bottom"].major_ticklabels.set_va("top")
+ax.set_ylabel("ha=center")
+ax.set_xlabel("va=top")
+
+ax = setup_axes(fig, 313)
+ax.axis["left"].major_ticklabels.set_ha("left")
+ax.axis["bottom"].major_ticklabels.set_va("bottom")
+ax.set_ylabel("ha=left")
+ax.set_xlabel("va=bottom")

Added: 
trunk/matplotlib/doc/mpl_toolkits/axes_grid/figures/demo_ticklabel_direction.py
===================================================================
--- 
trunk/matplotlib/doc/mpl_toolkits/axes_grid/figures/demo_ticklabel_direction.py 
                            (rev 0)
+++ 
trunk/matplotlib/doc/mpl_toolkits/axes_grid/figures/demo_ticklabel_direction.py 
    2009-12-07 01:17:16 UTC (rev 8010)
@@ -0,0 +1,52 @@
+
+import matplotlib.pyplot as plt
+import mpl_toolkits.axes_grid.axislines as axislines
+
+
+def setup_axes(fig, rect):
+    
+    ax = axislines.Subplot(fig, rect)
+    fig.add_subplot(ax)
+
+    ax.set_yticks([0.2, 0.8])
+    #ax.set_yticklabels(["short", "loooong"])
+    ax.set_xticks([0.2, 0.8])
+    #ax.set_xticklabels([r"$\frac{1}{2}\pi$", r"$\pi$"])
+
+    return ax
+
+fig = plt.figure(1, figsize=(6, 3))
+fig.subplots_adjust(bottom=0.2)
+
+
+
+ax = setup_axes(fig, 131)
+for axis in ax.axis.values(): axis.major_ticks.set_tick_out(True)
+#or you can simply do "ax.axis[:].major_ticks.set_tick_out(True)"
+
+
+
+
+ax = setup_axes(fig, 132)
+ax.axis["left"].set_axis_direction("right")
+ax.axis["bottom"].set_axis_direction("top")
+ax.axis["right"].set_axis_direction("left")
+ax.axis["top"].set_axis_direction("bottom")
+
+ax.axis["left"].major_ticklabels.set_pad(0)
+ax.axis["bottom"].major_ticklabels.set_pad(10)
+
+
+
+ax = setup_axes(fig, 133)
+ax.axis["left"].set_axis_direction("right")
+ax.axis[:].major_ticks.set_tick_out(True)
+
+ax.axis["left"].label.set_text("Long Label Left")
+ax.axis["bottom"].label.set_text("Label Bottom")
+ax.axis["right"].label.set_text("Long Label Right")
+ax.axis["right"].label.set_visible(True)
+ax.axis["left"].label.set_pad(0)
+ax.axis["bottom"].label.set_pad(10)
+
+plt.show()

Modified: trunk/matplotlib/doc/mpl_toolkits/axes_grid/users/axislines.rst
===================================================================
--- trunk/matplotlib/doc/mpl_toolkits/axes_grid/users/axislines.rst     
2009-12-07 01:16:44 UTC (rev 8009)
+++ trunk/matplotlib/doc/mpl_toolkits/axes_grid/users/axislines.rst     
2009-12-07 01:17:16 UTC (rev 8010)
@@ -42,7 +42,7 @@
 axis-related method in mpl may have no effect.
 In addition to AxisArtist instances, the axes_grid.axislines.Axes will
 have *gridlines* attribute (Gridlines), which obviously draws grid
-lines. 
+lines.
 
 In both AxisArtist and Gridlines, the calculation of tick and grid
 location is delegated to an instance of GridHelper class.
@@ -119,7 +119,44 @@
 
     ax.axis["left"].major_ticklabels.set_color("r")
 
+3. To change the attributes of multiple axis::
 
+    ax.axis["left","bottom"].major_ticklabels.set_color("r")
+
+   or to change the attributes of all axis::
+
+    ax.axis[:].major_ticklabels.set_color("r")
+
+4. To change the tick size (length), you need to use
+    axis.major_ticks.set_ticksize method. To change the direction of
+    the ticks (ticks are in opposite direction of ticklabels by
+    default), use axis.major_ticks.set_tick_out method.
+
+    To change the pad between ticks and ticklabels, use
+    axis.major_ticklabels.set_pad method.
+
+    To change the pad between ticklabels and axis label,
+    axis.label.set_pad method.
+
+Examples
+========
+
+Adjusting axis_direction
+------------------------
+
+.. plot:: mpl_toolkits/axes_grid/figures/demo_axis_direction.py
+
+Adjusting ticklabels alignment
+------------------------------
+
+.. plot:: mpl_toolkits/axes_grid/figures/demo_ticklabel_alignment.py
+
+Adjusting ticklabels pad
+------------------------
+
+.. plot:: mpl_toolkits/axes_grid/figures/demo_ticklabel_direction.py
+
+
 GridHelper
 ==========
 
@@ -138,7 +175,7 @@
     from mpl_toolkits.axes_grid.axislines import Subplot
 
     # from curved coordinate to rectlinear coordinate.
-    def tr(x, y): 
+    def tr(x, y):
         x, y = np.asarray(x), np.asarray(y)
         return x, y-x
 
@@ -171,7 +208,7 @@
 
     # extreme finder :  find a range of coordinate.
     # 20, 20 : number of sampling points along x, y direction
-    # The first coordinate (longitude, but theta in polar) 
+    # The first coordinate (longitude, but theta in polar)
     #   has a cycle of 360 degree.
     # The second coordinate (latitude, but radius in polar)  has a minimum of 0
     extreme_finder = angle_helper.ExtremeFinderCycle(20, 20,
@@ -225,7 +262,7 @@
 the resulting AxisArtist is properly added to the axes. A recommended
 way is to add it as an item of Axes's axis attribute.::
 
-    # floating axis whose first (index starts from 0) coordinate 
+    # floating axis whose first (index starts from 0) coordinate
     # (theta) is fixed at 60
 
     ax1.axis["lat"] = axis = ax1.new_floating_axis(0, 60)

Modified: trunk/matplotlib/doc/mpl_toolkits/axes_grid/users/overview.rst
===================================================================
--- trunk/matplotlib/doc/mpl_toolkits/axes_grid/users/overview.rst      
2009-12-07 01:16:44 UTC (rev 8009)
+++ trunk/matplotlib/doc/mpl_toolkits/axes_grid/users/overview.rst      
2009-12-07 01:17:16 UTC (rev 8010)
@@ -35,7 +35,7 @@
 padding between them cannot be easily done in matplotlib. AxesGrid is
 used in such case.
 
-.. plot:: mpl_examples/axes_grid/simple_axesgrid.py
+.. plot:: mpl_toolkits/axes_grid/examples/simple_axesgrid.py
    :include-source:
 
 * The postion of each axes is determined at the drawing time (see
@@ -398,3 +398,11 @@
 .. plot:: mpl_toolkits/axes_grid/examples/demo_floating_axis.py
 
 
+Floating Axes
+=============
+
+An axes whose outer axis are defined as floating axis.
+
+.. plot:: mpl_toolkits/axes_grid/examples/demo_floating_axes.py
+
+

Added: trunk/matplotlib/examples/axes_grid/demo_curvelinear_grid2.py
===================================================================
--- trunk/matplotlib/examples/axes_grid/demo_curvelinear_grid2.py               
                (rev 0)
+++ trunk/matplotlib/examples/axes_grid/demo_curvelinear_grid2.py       
2009-12-07 01:17:16 UTC (rev 8010)
@@ -0,0 +1,63 @@
+import numpy as np
+#from matplotlib.path import Path
+
+import matplotlib.pyplot as plt
+
+from  mpl_toolkits.axes_grid.grid_helper_curvelinear import 
GridHelperCurveLinear
+from mpl_toolkits.axes_grid.axislines import Subplot
+
+import  mpl_toolkits.axes_grid.angle_helper as angle_helper
+
+def curvelinear_test1(fig):
+    """
+    grid for custom transform.
+    """
+
+    def tr(x, y):
+        sgn = np.sign(x)
+        x, y = np.abs(np.asarray(x)), np.asarray(y)
+        return sgn*x**.5, y
+
+    def inv_tr(x,y):
+        sgn = np.sign(x)
+        x, y = np.asarray(x), np.asarray(y)
+        return sgn*x**2, y
+
+    extreme_finder = angle_helper.ExtremeFinderCycle(20, 20,
+                                                     lon_cycle = None,
+                                                     lat_cycle = None,
+                                                     lon_minmax = None, #(0, 
np.inf),
+                                                     lat_minmax = None,
+                                                     )
+
+    grid_helper = GridHelperCurveLinear((tr, inv_tr),
+                                        extreme_finder=extreme_finder)
+
+    ax1 = Subplot(fig, 111, grid_helper=grid_helper)
+    # ax1 will have a ticks and gridlines defined by the given
+    # transform (+ transData of the Axes). Note that the transform of
+    # the Axes itself (i.e., transData) is not affected by the given
+    # transform.
+
+    fig.add_subplot(ax1)
+
+    ax1.imshow(np.arange(25).reshape(5,5),
+               vmax = 50, cmap=plt.cm.gray_r,
+               interpolation="nearest",
+               origin="lower")
+
+    # tick density
+    grid_helper.grid_finder.grid_locator1._nbins = 6
+    grid_helper.grid_finder.grid_locator2._nbins = 6
+
+
+
+if 1:
+    fig = plt.figure(1, figsize=(7, 4))
+    fig.clf()
+
+    curvelinear_test1(fig)
+    plt.show()
+
+
+

Added: trunk/matplotlib/examples/axes_grid/demo_floating_axes.py
===================================================================
--- trunk/matplotlib/examples/axes_grid/demo_floating_axes.py                   
        (rev 0)
+++ trunk/matplotlib/examples/axes_grid/demo_floating_axes.py   2009-12-07 
01:17:16 UTC (rev 8010)
@@ -0,0 +1,130 @@
+from matplotlib.transforms import Affine2D
+
+from mpl_toolkits.axes_grid.floating_axes import FloatingSubplot,\
+     GridHelperCurveLinear
+
+import numpy as np
+import  mpl_toolkits.axes_grid.angle_helper as angle_helper
+from matplotlib.projections import PolarAxes
+from mpl_toolkits.axes_grid.grid_finder import FixedLocator, MaxNLocator, \
+     DictFormatter
+
+def setup_axes1(fig, rect):
+
+    #tr_scale = Affine2D().scale(np.pi/180., 1.)
+
+    tr = PolarAxes.PolarTransform()
+
+    pi = np.pi
+    angle_ticks = [(0, r"$0$"),
+                   (.25*pi, r"$\frac{1}{4}\pi$"),
+                   (.5*pi, r"$\frac{1}{2}\pi$")]
+    grid_locator1 = FixedLocator([v for v, s in angle_ticks])
+    tick_formatter1 = DictFormatter(dict(angle_ticks))
+
+    grid_locator2 = MaxNLocator(2)
+
+    grid_helper = GridHelperCurveLinear(tr,
+                                        extremes=(.5*pi, 0, 2, 1),
+                                        #extremes=(0, .5*pi, 1, 2),
+                                        #extremes=(0, 1, 1, 2),
+                                        grid_locator1=grid_locator1,
+                                        grid_locator2=grid_locator2,
+                                        tick_formatter1=tick_formatter1,
+                                        tick_formatter2=None,
+                                        )
+
+    ax1 = FloatingSubplot(fig, rect, grid_helper=grid_helper)
+    fig.add_subplot(ax1)
+
+    #ax1.axis[:]
+
+    # create a parasite axes whose transData in RA, cz
+    aux_ax = ax1.get_aux_axes(tr)
+
+    aux_ax.patch = ax1.patch # for aux_ax to have a clip path as in ax
+    ax1.patch.zorder=0.9 # but this has a side effect that the patch is
+                        # drawn twice, and possibly over some other
+                        # artists. So, we decrease the zorder a bit to
+                        # prevent this.
+
+    return ax1, aux_ax
+
+
+def setup_axes2(fig, rect):
+
+    # rotate a bit for better orientation
+    tr_rotate = Affine2D().translate(-95, 0)
+
+    # scale degree to radians
+    tr_scale = Affine2D().scale(np.pi/180., 1.)
+
+    tr = tr_rotate + tr_scale + PolarAxes.PolarTransform()
+
+    grid_locator1 = angle_helper.LocatorHMS(4)
+    tick_formatter1 = angle_helper.FormatterHMS()
+
+    grid_locator2 = MaxNLocator(3)
+
+    ra0, ra1 = 8.*15, 14.*15
+    cz0, cz1 = 0, 14000
+    grid_helper = GridHelperCurveLinear(tr,
+                                        extremes=(ra0, ra1, cz0, cz1),
+                                        grid_locator1=grid_locator1,
+                                        grid_locator2=grid_locator2,
+                                        tick_formatter1=tick_formatter1,
+                                        tick_formatter2=None,
+                                        )
+
+    ax1 = FloatingSubplot(fig, rect, grid_helper=grid_helper)
+    fig.add_subplot(ax1)
+
+    # adjust axis
+    ax1.axis["left"].set_axis_direction("bottom")
+    ax1.axis["right"].set_axis_direction("top")
+
+    ax1.axis["bottom"].set_visible(False)
+    ax1.axis["top"].set_axis_direction("bottom")
+    ax1.axis["top"].toggle(ticklabels=True, label=True)
+    ax1.axis["top"].major_ticklabels.set_axis_direction("top")
+    ax1.axis["top"].label.set_axis_direction("top")
+
+    ax1.axis["left"].label.set_text(r"cz [km$^{-1}$]")
+    ax1.axis["top"].label.set_text(r"$\alpha_{1950}$")
+
+
+    # create a parasite axes whose transData in RA, cz
+    aux_ax = ax1.get_aux_axes(tr)
+
+    aux_ax.patch = ax1.patch # for aux_ax to have a clip path as in ax
+    ax1.patch.zorder=0.9 # but this has a side effect that the patch is
+                        # drawn twice, and possibly over some other
+                        # artists. So, we decrease the zorder a bit to
+                        # prevent this.
+
+    return ax1, aux_ax
+
+
+def sixty(d, m, s):
+    return d + (m + s/60.)/60.
+
+
+
+if 1:
+    import matplotlib.pyplot as plt
+    fig = plt.figure(1, figsize=(7, 5))
+
+    ax1, aux_ax1 = setup_axes1(fig, 121)
+
+    theta = np.random.rand(10)*.5*np.pi
+    radius = np.random.rand(10)+1.
+    aux_ax1.scatter(theta, radius)
+
+    ax2, aux_ax2 = setup_axes2(fig, 122)
+
+    theta = (8 + np.random.rand(10)*(14-8))*15. # indegree
+    radius = np.random.rand(10)*14000.
+    aux_ax2.scatter(theta, radius)
+
+    plt.show()
+


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Matplotlib-checkins mailing list
Matplotlib-checkins@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to