Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d99ed09

Browse files
committed
FIX: Fix shape of hist output when input consists of multiple empty list
1 parent d31d102 commit d99ed09

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Modify output of Axes.hist when input consists of multiple empty lists
2+
``````````````````````````````````````````````````````````````````````
3+
4+
Input that consists of multiple empty lists will now return a list of histogram
5+
values for each one of the lists. For example, an input of ``[[],[]]`` will
6+
return 2 lists of histogram values. Previously, a single list was returned.

lib/matplotlib/axes/_axes.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6551,10 +6551,7 @@ def hist(self, x, bins=None, range=None, density=None, weights=None,
65516551
# basic input validation
65526552
input_empty = np.size(x) == 0
65536553
# Massage 'x' for processing.
6554-
if input_empty:
6555-
x = [np.array([])]
6556-
else:
6557-
x = cbook._reshape_2D(x, 'x')
6554+
x = cbook._reshape_2D(x, 'x')
65586555
nx = len(x) # number of datasets
65596556

65606557
# Process unit information

lib/matplotlib/tests/test_axes.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1665,6 +1665,20 @@ def test_hist_datetime_datasets():
16651665
ax.hist(data, stacked=False)
16661666

16671667

1668+
@pytest.mark.parametrize('data, expected_number_of_hists',
1669+
[([], 1),
1670+
([[]], 1),
1671+
([[], []], 2)])
1672+
def test_hist_with_empty_input(data, expected_number_of_hists):
1673+
hists, _, _ = plt.hist(data)
1674+
hists = np.asarray(hists)
1675+
1676+
if hists.ndim == 1:
1677+
assert 1 == expected_number_of_hists
1678+
else:
1679+
assert hists.shape[0] == expected_number_of_hists
1680+
1681+
16681682
def contour_dat():
16691683
x = np.linspace(-3, 5, 150)
16701684
y = np.linspace(-3, 5, 120)

0 commit comments

Comments
 (0)