Skip to content

Commit c999ab9

Browse files
authored
Merge pull request #4609 from robertcv/fix/binned_palette
[FIX] colorpalettes: fix BinnedContinuousPalette color assignments
2 parents 7789901 + 76b3608 commit c999ab9

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

Orange/widgets/utils/colorpalettes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ def from_palette(cls, palette, bins):
394394

395395
def _bin_indices(self, x):
396396
nans = np.isnan(x)
397-
binx = np.digitize(x, self.bins[1:-1], right=True)
397+
binx = np.digitize(x, self.bins[1:-1])
398398
binx.clip(0, len(self.bins) - 1)
399399
binx[nans] = -1
400400
return binx, nans

Orange/widgets/utils/tests/test_colorpalettes.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from orangewidget.tests.base import GuiTest
1010
from Orange.util import color_to_hex
1111
from Orange.data import DiscreteVariable, ContinuousVariable, Variable
12+
from Orange.preprocess.discretize import decimal_binnings
1213
# pylint: disable=wildcard-import,unused-wildcard-import
1314
from Orange.widgets.utils.colorpalettes import *
1415

@@ -464,6 +465,14 @@ def test_copy(self):
464465
copy.bins[0] += 1
465466
self.assertNotEqual(self.bins[0], copy.bins[0])
466467

468+
def test_decimal_binnings(self):
469+
"""test for consistency with binning from discretize"""
470+
data = np.array([1, 2])
471+
bins = decimal_binnings(data)[0].thresholds
472+
binned = BinnedContinuousPalette.from_palette(self.palette, bins)
473+
colors = binned.values_to_colors(data)
474+
assert not np.array_equal(colors[0], colors[1])
475+
467476

468477
class UtilsTest(GuiTest):
469478
def test_coloricon(self):

0 commit comments

Comments
 (0)