Revision: 5285
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=5285&view=rev
Author:   jdh2358
Date:     2008-05-28 07:39:23 -0700 (Wed, 28 May 2008)

Log Message:
-----------
zero area rects no longer influence auto-scaling

Modified Paths:
--------------
    trunk/matplotlib/API_CHANGES
    trunk/matplotlib/CHANGELOG
    trunk/matplotlib/lib/matplotlib/axes.py

Modified: trunk/matplotlib/API_CHANGES
===================================================================
--- trunk/matplotlib/API_CHANGES        2008-05-28 13:36:50 UTC (rev 5284)
+++ trunk/matplotlib/API_CHANGES        2008-05-28 14:39:23 UTC (rev 5285)
@@ -1,3 +1,4 @@
+
     Rewrote the cm.ScalarMappable callback infrastructure to use
     cbook.CallbackRegistry rather than custom callback handling.  Amy
     users of add_observer/notify of the cm.ScalarMappable should uae

Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG  2008-05-28 13:36:50 UTC (rev 5284)
+++ trunk/matplotlib/CHANGELOG  2008-05-28 14:39:23 UTC (rev 5285)
@@ -1,3 +1,7 @@
+2008-05-28 zero width/height Rectangles no longer influence the
+           autoscaler.  Useful for log histograms with empty bins -
+           JDH
+
 2008-05-28 Fix rendering of composite glyphs in Type 3 conversion
            (particularly as evidenced in the Eunjin.ttf Korean font)
            Thanks Jae-Joon Lee for finding this!

Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py     2008-05-28 13:36:50 UTC (rev 
5284)
+++ trunk/matplotlib/lib/matplotlib/axes.py     2008-05-28 14:39:23 UTC (rev 
5285)
@@ -1230,10 +1230,18 @@
 
     def _update_patch_limits(self, p):
         'update the datalimits for patch p'
+        # hist can add zero height Rectangles, which is useful to keep
+        # the bins, counts and patches lined up, but it throws off log
+        # scaling.  We'll ignore rects with zero height or width in
+        # the auto-scaling
+        if isinstance(p, mpatches.Rectangle) and p.get_width()==0. or 
p.get_height()==0.:
+            return
+
         vertices = p.get_patch_transform().transform(p.get_path().vertices)
         if p.get_data_transform() != self.transData:
             transform = p.get_data_transform() + self.transData.inverted()
             xys = transform.transform(vertices)
+
         self.update_datalim(vertices)
 
     def add_table(self, tab):
@@ -3509,14 +3517,15 @@
 
         if adjust_xlim:
             xmin, xmax = self.dataLim.intervalx
-            xmin = np.amin(width)
+            xmin = np.amin(width[width!=0]) # filter out the 0 width rects
             if xerr is not None:
                 xmin = xmin - np.amax(xerr)
             xmin = max(xmin*0.9, 1e-100)
             self.dataLim.intervalx = (xmin, xmax)
+
         if adjust_ylim:
             ymin, ymax = self.dataLim.intervaly
-            ymin = np.amin(height)
+            ymin = np.amin(height[height!=0]) # filter out the 0 height rects
             if yerr is not None:
                 ymin = ymin - np.amax(yerr)
             ymin = max(ymin*0.9, 1e-100)
@@ -5501,7 +5510,10 @@
         width.  If None, automatically compute the width. Ignored
         for 'step' histtype.
 
-        log: if True, the histogram axis will be set to a log scale
+        log: if True, the histogram axis will be set to a log scale.
+        If log is true and x is a 1D array, empty bins will be
+        filtered out and only the non-empty n, bins, patches will be
+        returned.
 
         kwargs are used to update the properties of the
         hist Rectangles:
@@ -5587,6 +5599,7 @@
                     ccount += 1
             elif orientation == 'vertical':
                 for m in n:
+
                     color = colors[ccount % len(colors)]
                     patch = self.bar(bins[:-1]+boffset, m, width=width,
                                      bottom=bottom, align='center', log=log,


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

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to