Fix #5572: Allow passing empty range to broken_barh #5600

Merged
merged 3 commits into from Dec 28, 2015
@@ -2339,8 +2339,16 @@ def broken_barh(self, xranges, yrange, **kwargs):
.. plot:: mpl_examples/pylab_examples/broken_barh.py
"""
# process the unit information
- self._process_unit_info(xdata=xranges[0],
- ydata=yrange[0],
+ if len(xranges):
+ xdata = six.next(iter(xranges))
@tacaswell

tacaswell Dec 22, 2015

Owner

I think we can just use next here https://docs.python.org/2/library/functions.html#next I think six provides it to support back to 2.4 or something like that.

+ else:
+ xdata = None
+ if len(yrange):
+ ydata = six.next(iter(yrange))
+ else:
+ ydata = None
+ self._process_unit_info(xdata=xdata,
+ ydata=ydata,
kwargs=kwargs)
xranges = self.convert_xunits(xranges)
yrange = self.convert_yunits(yrange)
@@ -4241,6 +4241,12 @@ def _helper_y(ax):
assert assert_array_equal(ax_lst[0][1].get_xlim(), orig_xlim)
+@cleanup
+def test_broken_barh_empty():
+ fig, ax = plt.subplots()
+ ax.broken_barh([], (.1, .5))
+
+
if __name__ == '__main__':
import nose
import sys