Skip to content

Commit cd3b114

Browse files
committed
Handle xunits for bins in axes.hist
1 parent bde67e9 commit cd3b114

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

lib/matplotlib/axes/_axes.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6575,6 +6575,9 @@ def hist(self, x, bins=None, range=None, density=False, weights=None,
65756575
if bin_range is not None:
65766576
bin_range = self.convert_xunits(bin_range)
65776577

6578+
if not cbook.is_scalar_or_string(bins):
6579+
bins = self.convert_xunits(bins)
6580+
65786581
# We need to do to 'weights' what was done to 'x'
65796582
if weights is not None:
65806583
w = cbook._reshape_2D(weights, 'weights')

lib/matplotlib/tests/test_axes.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1752,6 +1752,20 @@ def test_hist_datetime_datasets():
17521752
ax.hist(data, stacked=True)
17531753
ax.hist(data, stacked=False)
17541754

1755+
@pytest.mark.parametrize("bins_preprocess", [lambda bins: None, mpl.dates.date2num, lambda bins: bins],
1756+
ids=['None', 'date2num', 'datetime.datetime'])
1757+
def test_hist_datetime_datasets_bins(bins_preprocess):
1758+
data = [[datetime.datetime(2019, 1, 5), datetime.datetime(2019, 1, 11),
1759+
datetime.datetime(2019, 2, 1), datetime.datetime(2019, 3, 1)],
1760+
[datetime.datetime(2019, 1, 11), datetime.datetime(2019, 2, 5),
1761+
datetime.datetime(2019, 2, 18), datetime.datetime(2019, 3, 1)]]
1762+
1763+
date_edges = [datetime.datetime(2019, 1, 1), datetime.datetime(2019, 2, 1),
1764+
datetime.datetime(2019, 3, 1),]
1765+
1766+
fig, ax = plt.subplots()
1767+
ax.hist(data, bins=bins_preprocess(date_edges), stacked=True)
1768+
ax.hist(data, bins=bins_preprocess(date_edges), stacked=False)
17551769

17561770
@pytest.mark.parametrize('data, expected_number_of_hists',
17571771
[([], 1),

0 commit comments

Comments
 (0)