Skip to content

Unintuitive error message when len(palette) != len(categories in color variable) #168

Description

@timtreis

MRE

sdata = sd.read_zarr("/Users/tim.treis/Documents/GitHub/spatialdata-notebooks/notebooks/examples/visium.zarr")
sdata.table.obs["new_cluster"] = "NA"
sdata.table.obs.loc[sdata.table.obs.array_row==15.0, "new_cluster"] = "celltype_A"
sdata.table.obs.loc[sdata.table.obs.array_row==47.0, "new_cluster"] = "celltype_B"
sdata.table.obs.new_cluster = sdata.table.obs.new_cluster.astype("category")

sdata.pl.render_shapes("ST8059048_shapes", color="new_cluster", palette=["red", "blue"]).pl.show()

yields

File ~/Documents/GitHub/spatialdata-plot/src/spatialdata_plot/pl/render.py:88, in _render_shapes(sdata, render_params, coordinate_system, ax, fig_params, scalebar_params, legend_params)
     85     table = sdata.table[sdata.table.obs[_get_region_key(sdata)].isin([e])]
     87 # get color vector (categorical or continuous)
---> 88 color_source_vector, color_vector, _ = _set_color_source_vec(
     89     sdata=sdata_filt,
     90     element=sdata_filt.shapes[e],
     91     element_name=e,
     92     value_to_plot=render_params.color,
     93     layer=render_params.layer,
     94     groups=render_params.groups,
     95     palette=render_params.palette,
     96     na_color=render_params.cmap_params.na_color,
     97     alpha=render_params.fill_alpha,
     98     cmap_params=render_params.cmap_params,
     99 )
    101 values_are_categorical = color_source_vector is not None
    103 # color_source_vector is None when the values aren't categorical

File ~/Documents/GitHub/spatialdata-plot/src/spatialdata_plot/pl/utils.py:867, in _set_color_source_vec(sdata, element, value_to_plot, element_name, layer, groups, palette, na_color, alpha, cmap_params)
    865 color_vector = color_source_vector.map(color_map)
    866 if color_vector.isna().any():
--> 867     color_vector = color_vector.add_categories([to_hex(na_color)])
    868     color_vector = color_vector.fillna(to_hex(na_color))
    870 return color_source_vector, color_vector, True

AttributeError: 'Index' object has no attribute 'add_categories'

Should just throw an error that there is a length mismatch instead

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions