def METHOD_NAME(self):
    if self.geo_color_palette is None:
        self.no_colors_set = True
        self.geo_color_palette = bokeh.palettes.Purples9
    min, max = (
        self.source[self.color_column].min(skipna=True),
        self.source[self.color_column].max(skipna=True),
    )
    # set default nan_color
    self.source[self.rgba_columns] = list(
        ImageColor.getrgb(self.nan_color)
    ) + [50]
    if min == max:
        default_color = list(
            ImageColor.getrgb(self.geo_color_palette[0])
        ) + [255]
        color_ids = self.source[self.color_column] == min
        self.source.loc[color_ids, self.rgba_columns] = default_color
    elif not all(np.isnan([min, max])):
        BREAKS = np.linspace(
            min,
            max,
            len(self.geo_color_palette),
        )
        color_map = {
            **{
                key: list(ImageColor.getrgb(val)) + [255]
                for key, val in enumerate(self.geo_color_palette)
            },
            np.nan: list(ImageColor.getrgb(self.nan_color)) + [50],
        }
        idx = self.source.index
        if self.chart:
            # set base colors for current state if chart exists
            inds = pd.cut(
                self.source[self.color_column],
                BREAKS,
                labels=False,
                include_lowest=True,
            )
            self.chart.colors.loc[:, self.rgba_columns] = inds.map(
                color_map
            ).tolist()
            if len(self.chart.indices) > 0:
                # highlight selected indices only
                idx = self.chart.indices.intersection(idx)
        inds = pd.cut(
            self.source.loc[idx, self.color_column],
            BREAKS,
            labels=False,
            include_lowest=True,
        )
        self.source.loc[idx, self.rgba_columns] = inds.map(
            color_map
        ).tolist()