Skip to content

Commit cf2696e

Browse files
committed
change palette
1 parent 2648748 commit cf2696e

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

src/spatialdata_plot/pl/render.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ def _render_shapes(
8383
color_source_vector, color_vector, _ = _set_color_source_vec(
8484
sdata=sdata_filt,
8585
element=sdata_filt.shapes[e],
86+
element_index=index,
8687
element_name=e,
8788
value_to_plot=render_params.col_for_color[index],
8889
groups=render_params.groups[index] if render_params.groups[index][0] is not None else None,
@@ -248,6 +249,7 @@ def _render_points(
248249
color_source_vector, color_vector, _ = _set_color_source_vec(
249250
sdata=sdata_filt,
250251
element=points,
252+
element_index=index,
251253
element_name=e,
252254
value_to_plot=render_params.col_for_color[index],
253255
groups=render_params.groups[index] if render_params.groups[index][0] is not None else None,
@@ -591,6 +593,7 @@ def _render_labels(
591593
color_source_vector, color_vector, categorical = _set_color_source_vec(
592594
sdata=sdata_filt,
593595
element=label,
596+
element_index=i,
594597
element_name=e,
595598
value_to_plot=render_params.color[i],
596599
groups=render_params.groups,

src/spatialdata_plot/pl/utils.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,7 @@ def _get_colors_for_categorical_obs(
592592
def _set_color_source_vec(
593593
sdata: sd.SpatialData,
594594
element: SpatialElement | None,
595+
element_index: int,
595596
value_to_plot: str | None,
596597
element_name: list[str] | str | None = None,
597598
groups: Sequence[str] | str | None = None,
@@ -617,7 +618,7 @@ def _set_color_source_vec(
617618

618619
# numerical case, return early
619620
if color_source_vector is not None and not isinstance(color_source_vector.dtype, pd.CategoricalDtype):
620-
if palette is not None:
621+
if palette[element_index][0] is not None:
621622
logger.warning(
622623
"Ignoring categorical palette which is given for a continuous variable. "
623624
"Consider using `cmap` to pass a ColorMap."
@@ -1830,5 +1831,8 @@ def _update_params(sdata, params, wanted_elements_on_cs, element_type: Literal["
18301831
params = _update_element_table_mapping_label_colors(sdata, params, wanted_elements_on_cs)
18311832
else:
18321833
params = _validate_colors_element_table_mapping_points_shapes(sdata, params, wanted_elements_on_cs)
1834+
1835+
if params.palette is None:
1836+
params.palette = [[None] for _ in wanted_elements_on_cs]
18331837
image_flag = element_type == "images"
18341838
return _match_length_elements_groups_palette(params, wanted_elements_on_cs, image=image_flag)

tests/pl/test_render_labels.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,13 @@ def test_plot_can_color_labels(self, sdata_blobs: SpatialData):
8383
sdata_blobs.pl.render_labels(
8484
color=["channel_0_sum", "channel_1_sum"], table_name=["table", "multi_table"]
8585
).pl.show()
86+
87+
def test_can_plot_with_one_element_color_table(self, sdata_blobs: SpatialData):
88+
table = sdata_blobs["table"].copy()
89+
table.obs["region"] = "blobs_multiscale_labels"
90+
table.uns["spatialdata_attrs"]["region"] = "blobs_multiscale_labels"
91+
table = table[:, ~table.var_names.isin(["channel_0_sum"])]
92+
sdata_blobs["multi_table"] = table
93+
sdata_blobs.pl.render_labels(
94+
color=["channel_0_sum"], table_name=["table"]
95+
).pl.show()

0 commit comments

Comments
 (0)