def define_levels(self, nb_class, disc_func):
pot = self.pot
_min = np.nanmin(pot)
if not nb_class:
nb_class = int(get_opt_nb_class(len(pot)) - 2)
if not disc_func or "prog_geom" in disc_func:
levels = [_min] + [
np.nanmax(pot) / i for i in range(1, nb_class + 1)][::-1]
elif "equal_interval" in disc_func:
_bin = np.nanmax(pot) / nb_class
levels = [_min] + [_bin * i for i in range(1, nb_class+1)]
elif "percentiles" in disc_func:
levels = np.percentile(
np.concatenate((pot[pot.nonzero()], np.array([_min]))),
np.linspace(0.0, 100.0, nb_class+1))
elif "jenks" in disc_func:
levels = list(jenks_breaks(np.concatenate(
([_min], pot[pot.nonzero()])), nb_class))
levels[0] = levels[0] - _min * 0.01
elif "head_tail" in disc_func:
levels = head_tail_breaks(np.concatenate(
([_min], pot[pot.nonzero()])))
elif "maximal_breaks" in disc_func:
levels = maximal_breaks(np.concatenate(
([_min], pot[pot.nonzero()])), nb_class)
else:
raise ValueError
return levels
评论列表
文章目录