Revision: 7084
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7084&view=rev
Author:   leejjoon
Date:     2009-05-05 03:27:48 +0000 (Tue, 05 May 2009)

Log Message:
-----------
Better support for tick (tick label) color handling in axes_grid.axisline

Modified Paths:
--------------
    trunk/matplotlib/lib/matplotlib/text.py
    trunk/matplotlib/lib/mpl_toolkits/axes_grid/axislines.py
    trunk/matplotlib/lib/mpl_toolkits/axes_grid/inset_locator.py
    trunk/matplotlib/lib/mpl_toolkits/axes_grid/parasite_axes.py

Added Paths:
-----------
    trunk/matplotlib/lib/mpl_toolkits/axes_grid/ChangeLog

Modified: trunk/matplotlib/lib/matplotlib/text.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/text.py     2009-05-04 20:14:40 UTC (rev 
7083)
+++ trunk/matplotlib/lib/matplotlib/text.py     2009-05-05 03:27:48 UTC (rev 
7084)
@@ -235,7 +235,7 @@
         thisx, thisy  = 0.0, 0.0
         xmin, ymin    = 0.0, 0.0
         width, height = 0.0, 0.0
-        lines = self._text.split('\n')
+        lines = self.get_text().split('\n')
 
         whs = np.zeros((len(lines), 2))
         horizLayout = np.zeros((len(lines), 4))
@@ -406,10 +406,10 @@
             props = props.copy() # don't want to alter the pad externally
             pad = props.pop('pad', 4)
             pad = renderer.points_to_pixels(pad)
-            if self._text == "":
+            if self.get_text() == "":
                 self.arrow_patch.set_patchA(None)
                 return
-            
+
             bbox = self.get_window_extent(renderer)
             l,b,w,h = bbox.bounds
             l-=pad/2.
@@ -451,7 +451,7 @@
         if renderer is not None:
             self._renderer = renderer
         if not self.get_visible(): return
-        if self._text=='': return
+        if self.get_text()=='': return
 
         renderer.open_group('text', self.get_gid())
 
@@ -472,8 +472,8 @@
             self._draw_bbox(renderer, posx, posy)
 
         gc = renderer.new_gc()
-        gc.set_foreground(self._color)
-        gc.set_alpha(self._alpha)
+        gc.set_foreground(self.get_color())
+        gc.set_alpha(self.get_alpha())
         gc.set_url(self._url)
         if self.get_clip_on():
             gc.set_clip_rectangle(self.clipbox)
@@ -604,7 +604,7 @@
         need to know if the text has changed.
         """
         x, y = self.get_position()
-        return (x, y, self._text, self._color,
+        return (x, y, self.get_text(), self._color,
                 self._verticalalignment, self._horizontalalignment,
                 hash(self._fontproperties), self._rotation,
                 self.figure.dpi, id(self._renderer),
@@ -650,7 +650,7 @@
         if dpi is not None:
             dpi_orig = self.figure.dpi
             self.figure.dpi = dpi
-        if self._text == '':
+        if self.get_text() == '':
             tx, ty = self._get_xy_display()
             return Bbox.from_bounds(tx,ty,0,0)
 

Added: trunk/matplotlib/lib/mpl_toolkits/axes_grid/ChangeLog
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/axes_grid/ChangeLog                       
        (rev 0)
+++ trunk/matplotlib/lib/mpl_toolkits/axes_grid/ChangeLog       2009-05-05 
03:27:48 UTC (rev 7084)
@@ -0,0 +1,8 @@
+2009-05-04  Jae-Joon Lee  <[email protected]>
+
+       * inset_locator.py (inset_axes, zoomed_inset_axes): axes_class support
+
+       * axislines.py : Better support for tick (tick label) color
+       handling
+       (Axes.get_children): fix typo
+

Modified: trunk/matplotlib/lib/mpl_toolkits/axes_grid/axislines.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/axes_grid/axislines.py    2009-05-04 
20:14:40 UTC (rev 7083)
+++ trunk/matplotlib/lib/mpl_toolkits/axes_grid/axislines.py    2009-05-05 
03:27:48 UTC (rev 7084)
@@ -200,16 +200,18 @@
                     nth_coord = 1
                 elif loc in ["bottom", "top"]:
                     nth_coord = 0
+
+            self.nth_coord = nth_coord
+            self.axis = [self.axes.xaxis, self.axes.yaxis][self.nth_coord]
+
+            super(AxisLineHelper.Fixed, self).__init__(loc)
+
             if passingthrough_point is None:
                 passingthrough_point = self._default_passthru_pt[loc]
             if label_direction is None:
                 label_direction = loc
 
-            super(AxisLineHelper.Fixed, self).__init__(loc)
 
-            self.nth_coord = nth_coord
-            self.axis = [self.axes.xaxis, self.axes.yaxis][self.nth_coord]
-
             self.passthru_pt = passingthrough_point
 
             _verts = np.array([[0., 0.],
@@ -456,11 +458,48 @@
     def __init__(self, ticksize, **kwargs):
         self.ticksize = ticksize
         self.locs_angles = []
+
+        self._axis = kwargs.pop("axis", None)
+        if self._axis is not None:
+            if "color" not in kwargs:
+                kwargs["color"] = "auto"
+            if ("mew" not in kwargs) and ("markeredgewidth" not in kwargs):
+                kwargs["markeredgewidth"] = "auto"
+
         super(Ticks, self).__init__([0.], [0.], **kwargs)
-        #self.set_color("k")
-        self.set_mec("k")
-        self.set_mew(0.5)
 
+
+    def get_color(self):
+        if self._color == 'auto':
+            if self._axis is not None:
+                ticklines = self._axis.get_ticklines()
+                if ticklines:
+                    color_from_axis = ticklines[0].get_color()
+                    return color_from_axis
+            return "k"
+
+        return super(Ticks, self).get_color()
+
+
+    def get_markeredgecolor(self):
+        if self._markeredgecolor == 'auto':
+            return self.get_color()
+        else:
+            return self._markeredgecolor
+
+    def get_markeredgewidth(self):
+        if self._markeredgewidth == 'auto':
+            if self._axis is not None:
+                ticklines = self._axis.get_ticklines()
+                if ticklines:
+                    width_from_axis = ticklines[0].get_markeredgewidth()
+                    return width_from_axis
+            return .5
+
+        else:
+            return self._markeredgewidth
+
+
     def update_locs_angles(self, locs_angles, renderer):
         self.locs_angles = locs_angles
 
@@ -494,7 +533,7 @@
         gc = renderer.new_gc()
         self._set_gc_clip(gc)
         gc.set_foreground(self.get_markeredgecolor())
-        gc.set_linewidth(self._markeredgewidth)
+        gc.set_linewidth(self.get_markeredgewidth())
         gc.set_alpha(self._alpha)
 
         offset = renderer.points_to_pixels(size)
@@ -515,16 +554,33 @@
 
 class TickLabels(mtext.Text):
 
-    def __init__(self, size, color):
+    def __init__(self, size, **kwargs):
         self._locs_labels = []
 
+        self._axis = kwargs.pop("axis", None)
+        if self._axis is not None:
+            if "color" not in kwargs:
+                kwargs["color"] = "auto"
+
         super(TickLabels, self).__init__(x=0., y=0., text="",
-                                         color=color,
+                                         **kwargs
                                          )
 
     def update_locs_labels(self, locs_labels, renderer):
         self._locs_labels = locs_labels
 
+    def get_color(self):
+        if self._color == 'auto':
+            if self._axis is not None:
+                ticklabels = self._axis.get_ticklabels()
+                if ticklabels:
+                    color_from_axis = ticklabels[0].get_color()
+                    return color_from_axis
+            return "k"
+
+        return super(TickLabels, self).get_color()
+
+
     def draw(self, renderer):
         if not self.get_visible(): return
 
@@ -549,6 +605,34 @@
         #else:
         #    return Bbox.from_bounds(0, 0, 0, 0)
 
+
+class AxisLabel(mtext.Text):
+    def __init__(self, *kl, **kwargs):
+        self._axis = kwargs.pop("axis", None)
+        if self._axis is not None:
+            if "color" not in kwargs:
+                kwargs["color"] = "auto"
+
+        super(AxisLabel, self).__init__(*kl, **kwargs)
+
+    def get_color(self):
+        if self._color == 'auto':
+            if self._axis is not None:
+                label = self._axis.get_label()
+                if label:
+                    color_from_axis = label.get_color()
+                    return color_from_axis
+            return "k"
+
+        return super(AxisLabel, self).get_color()
+
+    def get_text(self):
+        t = super(AxisLabel, self).get_text()
+        if t == "__from_axes__":
+            return self._axis.get_label().get_text()
+        return self._text
+
+
 class AxisGridLineBase(martist.Artist):
     def __init__(self, *kl, **kw):
         super(AxisGridLineBase, self).__init__(*kl, **kw)
@@ -599,9 +683,9 @@
 
 
         if self._helper.label_direction in ["left", "right"]:
+            axis_name = "ytick"
+        else:
             axis_name = "xtick"
-        else:
-            axis_name = "ytick"
 
 
         if major_tick_size is None:
@@ -638,12 +722,13 @@
 
         transform=self._helper.get_tick_transform()+self.offset_transform
 
-        self.major_ticks = Ticks(self.major_tick_size, transform=transform)
-        self.minor_ticks = Ticks(self.minor_tick_size, transform=transform)
+        self.major_ticks = Ticks(self.major_tick_size,
+                                 transform=transform)
+        self.minor_ticks = Ticks(self.minor_tick_size,
+                                 transform=transform)
 
 
         size = rcParams['xtick.labelsize']
-        color = rcParams['xtick.color']
 
         fontprops = font_manager.FontProperties(size=size)
         tvhl = self._helper.get_ticklabel_transform(self.major_tick_pad,
@@ -652,10 +737,14 @@
                                                     trans=transform)
         trans, vert, horiz, label_a = tvhl
 
-        self.major_ticklabels = TickLabels(size, color)
-        self.minor_ticklabels = TickLabels(size, color)
+        color = rcParams['xtick.color']
+        self.major_ticklabels = TickLabels(size, color=color)
+        self.minor_ticklabels = TickLabels(size, color=color)
 
+        #self.major_ticklabels = TickLabels(size, axis=self.axis)
+        #self.minor_ticklabels = TickLabels(size, axis=self.axis)
 
+
         self.major_ticklabels.set(figure = self.axes.figure,
                                   rotation = label_a,
                                   transform=trans,
@@ -724,10 +813,10 @@
                          color = rcParams['axes.labelcolor'],
                          )
 
-        self.label = mtext.Text(0, 0, "__from_axes__",
-                                fontproperties=fontprops,
-                                color = rcParams['axes.labelcolor'],
-                                )
+        self.label = AxisLabel(0, 0, "",
+                               fontproperties=fontprops,
+                               color = rcParams['axes.labelcolor'],
+                               )
         self.label.set_figure(self.axes.figure)
 
         #self._set_artist_props(label)
@@ -752,15 +841,16 @@
                        transform=tr2,
                        va=va, ha=ha, rotation=a)
 
-        if self.label.get_text() == "__from_axes__":
-            label_text = self._helper.axis.get_label().get_text()
-            self.label.set_text(label_text)
-            self.label.draw(renderer)
-            self.label.set_text("__from_axes__")
-        else:
-            self.label.draw(renderer)
+#         if self.label.get_text() == "__from_axes__":
+#             label_text = self.axis.get_label().get_text()
+#             self.label.set_text(label_text)
+#             self.label.draw(renderer)
+#             self.label.set_text("__from_axes__")
+#         else:
 
+        self.label.draw(renderer)
 
+
     def set_label(self, s):
         self.label.set_text(s)
 
@@ -857,9 +947,11 @@
 
 
         if self._helper.label_direction in ["left", "right"]:
+            axis_name = "ytick"
+            self.axis = axes.yaxis
+        else:
             axis_name = "xtick"
-        else:
-            axis_name = "ytick"
+            self.axis = axes.xaxis
 
 
         if major_tick_size is None:
@@ -897,12 +989,15 @@
 
         transform=self._helper.get_tick_transform()+self.offset_transform
 
-        self.major_ticks = Ticks(self.major_tick_size, transform=transform)
-        self.minor_ticks = Ticks(self.minor_tick_size, transform=transform)
+        self.major_ticks = Ticks(self.major_tick_size,
+                                 axis=self.axis,
+                                 transform=transform)
+        self.minor_ticks = Ticks(self.minor_tick_size,
+                                 axis=self.axis,
+                                 transform=transform)
 
 
         size = rcParams['xtick.labelsize']
-        color = rcParams['xtick.color']
 
         fontprops = font_manager.FontProperties(size=size)
         tvhl = self._helper.get_ticklabel_transform(self.major_tick_pad,
@@ -911,10 +1006,14 @@
                                                     trans=transform)
         trans, vert, horiz, label_a = tvhl
 
-        self.major_ticklabels = TickLabels(size, color)
-        self.minor_ticklabels = TickLabels(size, color)
+        #color = rcParams['xtick.color']
+        #self.major_ticklabels = TickLabels(size, color=color)
+        #self.minor_ticklabels = TickLabels(size, color=color)
 
+        self.major_ticklabels = TickLabels(size, axis=self.axis)
+        self.minor_ticklabels = TickLabels(size, axis=self.axis)
 
+
         self.major_ticklabels.set(figure = self.axes.figure,
                                   rotation = label_a,
                                   transform=trans,
@@ -1022,10 +1121,12 @@
                          color = rcParams['axes.labelcolor'],
                          )
 
-        self.label = mtext.Text(0, 0, "__from_axes__",
-                                fontproperties=fontprops,
-                                color = rcParams['axes.labelcolor'],
-                                )
+        self.label = AxisLabel(0, 0, "__from_axes__",
+                               color = "auto", #rcParams['axes.labelcolor'],
+                               fontproperties=fontprops,
+                               axis=self.axis,
+                               )
+
         self.label.set_figure(self.axes.figure)
 
         #self._set_artist_props(label)
@@ -1050,15 +1151,16 @@
                        transform=tr2,
                        va=va, ha=ha, rotation=a)
 
-        if self.label.get_text() == "__from_axes__":
-            label_text = self._helper.axis.get_label().get_text()
-            self.label.set_text(label_text)
-            self.label.draw(renderer)
-            self.label.set_text("__from_axes__")
-        else:
-            self.label.draw(renderer)
+#         if self.label.get_text() == "__from_axes__":
+#             label_text = self._helper.axis.get_label().get_text()
+#             self.label.set_text(label_text)
+#             self.label.draw(renderer)
+#             self.label.set_text("__from_axes__")
+#         else:
 
+        self.label.draw(renderer)
 
+
     def set_label(self, s):
         self.label.set_text(s)
 
@@ -1208,7 +1310,7 @@
         if self._axisline_on:
             children = self._axislines.values()+[self.gridlines]
         else:
-            cildren = []
+            children = []
         children.extend(super(Axes, self).get_children())
         return children
 
@@ -1253,15 +1355,16 @@
                 continue
 
             if axisline.label.get_visible():
-                if axisline.label.get_text() == "__from_axes__":
-                    label_text = axisline._helper.axis.get_label().get_text()
-                    axisline.label.set_text(label_text)
-                    bb.append(axisline.label.get_window_extent(renderer))
-                    axisline.label.set_text("__from_axes__")
-                else:
-                    bb.append(axisline.label.get_window_extent(renderer))
+#                 if axisline.label.get_text() == "__from_axes__":
+#                     label_text = axisline._helper.axis.get_label().get_text()
+#                     axisline.label.set_text(label_text)
+#                     bb.append(axisline.label.get_window_extent(renderer))
+#                     axisline.label.set_text("__from_axes__")
+#                 else:
 
+                bb.append(axisline.label.get_window_extent(renderer))
 
+
             if axisline.major_ticklabels.get_visible():
                 
bb.extend(axisline.major_ticklabels.get_window_extents(renderer))
             if axisline.minor_ticklabels.get_visible():

Modified: trunk/matplotlib/lib/mpl_toolkits/axes_grid/inset_locator.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/axes_grid/inset_locator.py        
2009-05-04 20:14:40 UTC (rev 7083)
+++ trunk/matplotlib/lib/mpl_toolkits/axes_grid/inset_locator.py        
2009-05-05 03:27:48 UTC (rev 7084)
@@ -246,9 +246,13 @@
 
 def inset_axes(parent_axes, width, height, loc=1,
                bbox_to_anchor=None, bbox_transform=None,
+               axes_class=None,
                axes_kwargs=None,
                **kwargs):
 
+   if axes_class is None:
+      axes_class = Axes
+
    if axes_kwargs is None:
       inset_axes = Axes(parent_axes.figure, parent_axes.get_position())
    else:
@@ -268,24 +272,24 @@
 
 def zoomed_inset_axes(parent_axes, zoom, loc=1,
                       bbox_to_anchor=None, bbox_transform=None,
+                      axes_class=None,
                       axes_kwargs=None,
-                      connects=None,
                       **kwargs):
 
+   if axes_class is None:
+      axes_class = Axes
+
    if axes_kwargs is None:
-      inset_axes = Axes(parent_axes.figure, parent_axes.get_position())
+      inset_axes = axes_class(parent_axes.figure, parent_axes.get_position())
    else:
-      inset_axes = Axes(parent_axes.figure, parent_axes.get_position(),
-                        **axes_kwargs)
+      inset_axes = axes_class(parent_axes.figure, parent_axes.get_position(),
+                              **axes_kwargs)
 
    axes_locator = AnchoredZoomLocator(parent_axes, zoom=zoom, loc=loc)
    inset_axes.set_axes_locator(axes_locator)
 
    _add_inset_axes(parent_axes, inset_axes)
 
-   if connects is not None:
-      pass
-
    return inset_axes
 
 

Modified: trunk/matplotlib/lib/mpl_toolkits/axes_grid/parasite_axes.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/axes_grid/parasite_axes.py        
2009-05-04 20:14:40 UTC (rev 7083)
+++ trunk/matplotlib/lib/mpl_toolkits/axes_grid/parasite_axes.py        
2009-05-05 03:27:48 UTC (rev 7084)
@@ -287,13 +287,21 @@
 
         ax2 = ParasiteAxes(self, sharex=self, frameon=False)
         self.parasites.append(ax2)
+
+        # for normal axes
+        self.yaxis.tick_left()
+        ax2.xaxis.set_visible(False)
+        ax2.yaxis.tick_right()
+        ax2.yaxis.set_label_position('right')
+
+        # for axisline axes
         self._axislines["right"].set_visible(False)
-        ax2.xaxis.set_visible(False)
         ax2._axislines["left"].set_visible(False)
         ax2._axislines["right"].set_visible(True)
         ax2._axislines["right"].major_ticklabels.set_visible(True)
         ax2._axislines["right"].label.set_visible(True)
-        self.yaxis.tick_left()
+
+
         return ax2
 
     def twiny(self):
@@ -310,11 +318,20 @@
 
         ax2 = ParasiteAxes(self, sharey=self, frameon=False)
         self.parasites.append(ax2)
-        ax2.xaxis.set_visible(True)
+
+        # for normal axes
+        self.xaxis.tick_bottom()
         ax2.yaxis.set_visible(False)
         ax2.xaxis.tick_top()
         ax2.xaxis.set_label_position('top')
-        self.xaxis.tick_bottom()
+
+        # for axisline axes
+        self._axislines["top"].set_visible(False)
+        ax2._axislines["bottom"].set_visible(False)
+        ax2._axislines["top"].set_visible(True)
+        ax2._axislines["top"].major_ticklabels.set_visible(True)
+        ax2._axislines["top"].label.set_visible(True)
+
         return ax2
 
     def twin(self, aux_trans=None):
@@ -339,6 +356,16 @@
                                        )
         self.parasites.append(ax2)
 
+
+        # for normal axes
+        self.yaxis.tick_left()
+        self.xaxis.tick_bottom()
+        ax2.yaxis.tick_right()
+        ax2.yaxis.set_label_position('right')
+        ax2.xaxis.tick_top()
+        ax2.xaxis.set_label_position('top')
+
+        # for axisline axes
         self._axislines["right"].set_visible(False)
         self._axislines["top"].set_visible(False)
         ax2._axislines["left"].set_visible(False)


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

------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to