@@ -201,8 +201,8 @@ class DataArrayModel(AbstractArrayModel):
201201 Parent Widget.
202202 bg_gradient : LinearGradient, optional
203203 Background color gradient
204- bg_value : LArray , optional
205- Background color value
204+ bg_value : Numpy ndarray , optional
205+ Background color value. Must have the shape as data
206206 minvalue : scalar
207207 Minimum value allowed.
208208 maxvalue : scalar
@@ -299,7 +299,14 @@ def set_format(self, format):
299299 self .reset ()
300300
301301 def set_background (self , bg_gradient = None , bg_value = None ):
302- self .bg_gradient = bg_gradient
302+ if bg_gradient is not None and not isinstance (bg_gradient , LinearGradient ):
303+ raise ValueError ("Expected None or LinearGradient instance for `bg_gradient` argument" )
304+ if bg_value is not None and not (isinstance (bg_value , np .ndarray ) and bg_value .shape == self ._data .shape ):
305+ raise ValueError ("Expected None or 2D Numpy ndarray with shape {} for `bg_value` argument"
306+ .format (self ._data .shape ))
307+ # self.bg_gradient must never be None
308+ if bg_gradient is not None :
309+ self .bg_gradient = bg_gradient
303310 self .bg_value = bg_value
304311 self .reset ()
305312
@@ -349,13 +356,8 @@ def data(self, index, role=Qt.DisplayRole):
349356 if self .bg_value is None :
350357 return self .bg_gradient [float (self .color_func (value ))]
351358 else :
352- bg_value = self .bg_value
353- x , y = index .row (), index .column ()
354- # FIXME: this is buggy on filtered data. We should change
355- # bg_value when changing the filter.
356- idx = y + x * bg_value .shape [- 1 ]
357- value = bg_value .data .flat [idx ]
358- return self .bg_gradient [value ]
359+ i , j = index .row (), index .column ()
360+ return self .bg_gradient [self .bg_value [i , j ]]
359361 # elif role == Qt.ToolTipRole:
360362 # return to_qvariant("{}\n{}".format(repr(value),self.get_labels(index)))
361363 return to_qvariant ()
0 commit comments