-
Notifications
You must be signed in to change notification settings - Fork 102
Closed
Description
Currently, values that are outside the prescribed domain
are going to be treated like nan/null values inside data_color
:

(ref: https://posit-dev.github.io/great-tables/reference/GT.html#great_tables.GT.data_color)
I think it would be a useful feature to allow a flag that enables a different behavior: Instead of treating the values as nan/null, they should be truncated to the min/max values of the domain. E.g.:
gt.GT(gt.data.exibble).data_color(
columns="currency",
palette=["red", "green"],
domain=[0, 50],
na_color="lightgray"
truncate=True # <<<<<<<<<<< This could be the new flag.
)
Then the entries 65100.0
and 1325.81
would get the same color as a value of 50
.
If this is a feature that makes sense, the _rescale_numeric
could be a good place to add this to.
great-tables/great_tables/_data_color/base.py
Line 572 in 11660a6
def _rescale_numeric( |
The change could look like this:
if truncate:
scaled_vals = [min(1, max(0, x)) if not is_na(df, x) else np.nan for x in scaled_vals]
else:
scaled_vals = [x if not is_na(df, x) and (x >= 0 and x <= 1) else np.nan for x in scaled_vals]
AdrienDart and frederikaalund