Ejemplo n.º 1
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()