Example #1
0
 def test_decimal_binnings(self):
     """test for consistency with binning from discretize"""
     data = np.array([1, 2])
     bins = decimal_binnings(data)[0].thresholds
     binned = BinnedContinuousPalette.from_palette(self.palette, bins)
     colors = binned.values_to_colors(data)
     assert not np.array_equal(colors[0], colors[1])
Example #2
0
    def recompute_binnings(self):
        if self.is_valid and self.var.is_continuous:
            # binning is computed on valid var data, ignoring any cvar nans
            column = self.data.get_column_view(self.var)[0].astype(float)
            if np.any(np.isfinite(column)):
                if self.var.is_time:
                    self.binnings = time_binnings(column, min_unique=5)
                else:
                    self.binnings = decimal_binnings(
                        column,
                        min_width=self.min_var_resolution(self.var),
                        add_unique=10,
                        min_unique=5)
                fm = QFontMetrics(self.font())
                width = max(
                    fm.size(Qt.TextSingleLine,
                            self._short_text(binning.width_label)).width()
                    for binning in self.binnings)
                self.bin_width_label.setFixedWidth(width)
                max_bins = len(self.binnings) - 1
        else:
            self.binnings = []
            max_bins = 0

        self.controls.number_of_bins.setMaximum(max_bins)
        self.number_of_bins = min(
            max_bins, self._user_var_bins.get(self.var, self.number_of_bins))
        self._set_bin_width_slider_label()
Example #3
0
    def recompute_binnings(self):
        if self.is_mode():
            return

        if self.is_time():
            self.binnings = time_binnings(self.agg_data, min_unique=3,
                                          min_bins=3, max_bins=15)
        else:
            self.binnings = decimal_binnings(self.agg_data, min_unique=3,
                                             min_bins=3, max_bins=15)

        max_bins = len(self.binnings) - 1
        self.controls.binning_index.setMaximum(max_bins)
        self.binning_index = min(max_bins, self.binning_index)
Example #4
0
    def recompute_binnings(self):
        if self.is_valid and self.var.is_continuous:
            # binning is computed on valid var data, ignoring any cvar nans
            column = self.data.get_column_view(self.var)[0].astype(float)
            if np.any(np.isfinite(column)):
                if self.var.is_time:
                    self.binnings = time_binnings(column, min_unique=5)
                    self.bin_width_label.setFixedWidth(45)
                else:
                    self.binnings = decimal_binnings(
                        column, min_width=self.min_var_resolution(self.var),
                        add_unique=10, min_unique=5)
                    self.bin_width_label.setFixedWidth(35)
                max_bins = len(self.binnings) - 1
        else:
            self.binnings = []
            max_bins = 0

        self.controls.number_of_bins.setMaximum(max_bins)
        self.number_of_bins = min(
            max_bins, self._user_var_bins.get(self.var, self.number_of_bins))
        self._set_bin_width_slider_label()
Example #5
0
    def recompute_binnings(self):
        self.binnings = []
        self.bin_widths = []
        max_bins = 0
        if self.is_valid and self.var.is_continuous:
            # binning is computed on valid var data, ignoring any cvar nans
            column = self.data.get_column_view(self.var)[0].astype(float)
            if np.any(np.isfinite(column)):
                binnings = decimal_binnings(column,
                                            min_width=self.min_var_resolution(
                                                self.var),
                                            add_unique=10,
                                            min_unique=5,
                                            return_defs=True)[::-1]
                self.binnings = [get_bins(bin) for bin in binnings]
                self.bin_widths = [bin.width for bin in binnings]
                max_bins = len(self.binnings) - 1

        self.controls.number_of_bins.setMaximum(max_bins)
        self.number_of_bins = min(
            max_bins, self._user_var_bins.get(self.var, self.number_of_bins))
        self._set_bin_width_slider_label()