Index: lib/matplotlib/axes.py
===================================================================
--- lib/matplotlib/axes.py	(revision 8214)
+++ lib/matplotlib/axes.py	(working copy)
@@ -7191,6 +7191,22 @@
             else:
                 n = [m[slc].cumsum()[slc] for m in n]
 
+        if 'color' in kwargs:
+            color = kwargs.pop('color')
+            try:
+                if len(n) > 1 and len(n) == len(color):
+                    colors = color
+                else:
+                    colors = [color for i in range(len(n))]
+            except TypeError:
+                colors = [color for i in np.arange(len(n))]
+        else:
+            try:
+                colors = [self._get_lines._get_next_cycle_color()
+                          for i in np.arange(len(n))]
+            except TypeError:
+                colors = self._get_lines._get_next_cycle_color()
+            
         patches = []
 
         if histtype.startswith('bar'):
@@ -7225,22 +7241,20 @@
                 raise ValueError, 'invalid align: %s' % align
 
             if orientation == 'horizontal':
-                for m in n:
-                    color = self._get_lines.color_cycle.next()
+                for i, m in enumerate(n):
                     patch = self.barh(bins[:-1]+boffset, m, height=width,
                                       left=bottom, align='center', log=log,
-                                      color=color)
+                                      color=colors[i])
                     patches.append(patch)
                     if stacked:
                         if bottom is None: bottom = 0.0
                         bottom += m
                     boffset += dw
             elif orientation == 'vertical':
-                for m in n:
-                    color = self._get_lines.color_cycle.next()
+                for i, m in enumerate(n):
                     patch = self.bar(bins[:-1]+boffset, m, width=width,
                                      bottom=bottom, align='center', log=log,
-                                     color=color)
+                                     color=colors[i])
                     patches.append(patch)
                     if stacked:
                         if bottom is None: bottom = 0.0
@@ -7275,7 +7289,7 @@
             elif histtype != 'step':
                 raise ValueError, 'invalid histtype: %s' % histtype
 
-            for m in n:
+            for i, m in enumerate(n):
                 y[1:-1:2], y[2::2] = m, m
                 if log:
                     y[y<1e-100]=1e-100
@@ -7284,13 +7298,12 @@
                 elif orientation != 'vertical':
                     raise ValueError, 'invalid orientation: %s' % orientation
 
-                color = self._get_lines.color_cycle.next()
                 if fill:
                     patches.append( self.fill(x, y,
-                        closed=False, facecolor=color) )
+                        closed=False, facecolor=colors[i]) )
                 else:
                     patches.append( self.fill(x, y,
-                        closed=False, edgecolor=color, fill=False) )
+                        closed=False, edgecolor=colors[i], fill=False) )
 
             # adopted from adjust_x/ylim part of the bar method
             if orientation == 'horizontal':
