Skip to content

Feature request: add argument to data_color that truncates values outside of the domain instead of setting them to nan #430

@thomascamminady

Description

@thomascamminady

Currently, values that are outside the prescribed domain are going to be treated like nan/null values inside data_color:

image

(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.

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]

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions