Open walljcg opened 5 months ago
`
colour_palette = [ "#1a9850", "#91cf60", "#d9ef8b", "#fee08b", "#fc8d59", "#d73027", ]
def palette_interpolation(palette=None, min=0, max=1,): if palette: bins = np.linspace(start=min, stop=max, num=len(palette)+1) bins = [f"{s:.0f}" for s in bins] val_ranges = list(zip(bins[0:], bins[1:])) val_ranges = [s[0] + '-' + s[1] for s in val_ranges] val_ranges = list(zip(val_ranges, palette)) return dict(val_ranges)
df['colour'] = list(pd.cut(df[val_column], bins=len(colour_palette), labels=colour_palette).values)
legend_dict=palette_interpolation(palette=colour_palette, min=np.nanmin(df[val_column]), max=np.nanmax(df[val_column])) `
This issue is also related to https://github.com/wildlife-dynamics/ecoscope-workflows/issues/46
Some possible frameworks to look into:
`
define colour palette
colour_palette = [ "#1a9850", "#91cf60", "#d9ef8b", "#fee08b", "#fc8d59", "#d73027", ]
linear value interpolation
def palette_interpolation(palette=None, min=0, max=1,): if palette: bins = np.linspace(start=min, stop=max, num=len(palette)+1) bins = [f"{s:.0f}" for s in bins] val_ranges = list(zip(bins[0:], bins[1:])) val_ranges = [s[0] + '-' + s[1] for s in val_ranges] val_ranges = list(zip(val_ranges, palette)) return dict(val_ranges)
df['colour'] = list(pd.cut(df[val_column], bins=len(colour_palette), labels=colour_palette).values)
legend_dict=palette_interpolation(palette=colour_palette, min=np.nanmin(df[val_column]), max=np.nanmax(df[val_column])) `