Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 74 additions & 81 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,6 +52,7 @@
_set_outline,
_update_params,
_validate_image_render_params,
_validate_points_render_params,
_validate_render_params,
_validate_shape_render_params,
_validate_show_parameters,
Expand DownExpand Up@@ -175,40 +176,37 @@ def render_shapes(
Parameters
----------
element : str | None, optional
The name of the shapes element to render. If `None`, all shapes
elements in the `SpatialData` object will be used. If you would like multiple specific elements to be
rendered, please chain the calls to render: pl.render_shapes(...).pl.render_shapes(...).pl.show()
The name of the shapes element to render. If `None`, all shapes elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_shapes(...).pl.render_shapes(...).pl.show().
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If element is None, if possible the color will
be broadcasted to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the elements.
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
fill_alpha : float | int, default 1.0
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the
user, this value will multiply the value present in the cmap.
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the user, this value
will multiply the value present in the cmap.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. If elment is None,
broadcasting behaviour is attempted (use the same values for all elements).
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. If element is None, broadcasting behaviour is
attempted (use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
outline : bool, default False
If `True`, a border around the shape elements is plotted.
outline_width : float | int, default 1.5
Width of the border.
outline_color : str | list[float], default "#000000ff"
Color of the border. Can either be a named color ("red"), a hex
representation ("#000000ff") or a list of floats that represent RGB/RGBA
values (1.0, 0.0, 0.0, 1.0).
Color of the border. Can either be a named color ("red"), a hex representation ("#000000ff") or a list of
floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0).
outline_alpha : float | int, default 1.0
Alpha value for the outline of shapes.
cmap : Colormap | str | None, optional
Expand All@@ -217,7 +215,7 @@ def render_shapes(
Colormap normalization for continuous annotations.
scale : float | int, default 1.0
Value to scale circles, if present.
table_name:
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
Expand DownExpand Up@@ -284,67 +282,61 @@ def render_shapes(

return sdata

@deprecation_alias(elements="element", version="0.3.0")
def render_points(
self,
elements: list[str] | str | None = None,
color: list[str | None] | str | None = None,
element: str | None = None,
color: str | None = None,
alpha: float | int = 1.0,
groups: list[list[str | None]] | list[str | None] | str | None = None,
palette: list[list[str | None]] | list[str | None] | str | None = None,
groups: list[str] | str | None = None,
palette: list[str] | str | None = None,
na_color: ColorLike | None = "lightgrey",
cmap: Colormap | str | None = None,
norm: None | Normalize = None,
size: float | int = 1.0,
table_name: list[str] | str | None = None,
table_name: str | None = None,
**kwargs: Any,
) -> sd.SpatialData:
"""
Render points elements in SpatialData.

Parameters
----------
elements : list[str] | str | None, optional
The name(s) of the points element(s) to render. If `None`, all points
elements in the `SpatialData` object will be used.
color : list[str | None] | str | None
Can either be string(s) representing a color-like or key(s) in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If provided as a list, the length of the list
must match the number of elements that will be plotted. Otherwise, if possible the color will be broadcasted
to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the element.
element : str | None, optional
The name of the points element to render. If `None`, all points elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_points(...).pl.render_points(...).pl.show()
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
alpha : float | int, default 1.0
Alpha value for the points.
groups : list[list[str | None]] | list[str | None] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. In general the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
discrete labels to be visualized. If not provided as list of lists, broadcasting behaviour is attempted
(use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
palette : list[list[str | None]] | list[str | None] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. Similarly to groups, in the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
palettes (one per group) to be visualized. If not provided as list of lists, broadcasting behaviour is
attempted (use the same values for all elements).
na_color : str | list[float] | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
cmap : Colormap | str | None, optional
Colormap for discrete or continuous annotations using 'color', see
:class:`matplotlib.colors.Colormap`. If no palette is given and `color`
refers to a categorical, the colors are sampled from this colormap.
Colormap for discrete or continuous annotations using 'color', see :class:`matplotlib.colors.Colormap`. If
no palette is given and `color` refers to a categorical, the colors are sampled from this colormap.
norm : bool | Normalize, default False
Colormap normalization for continuous annotations.
size : float | int, default 1.0
Size of the points
table_name:
Name of the table(s) containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If multiple names are given in a list than the
length must be equal to the number of spatial elements being plotted.
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
kwargs
Additional arguments to be passed to cmap and norm.

Expand All@@ -353,10 +345,9 @@ def render_points(
sd.SpatialData
The modified SpatialData object with the rendered shapes.
"""
params_dict = _validate_render_params(
"points",
params_dict = _validate_points_render_params(
self._sdata,
elements=elements,
element=element,
alpha=alpha,
color=color,
groups=groups,
Expand All@@ -365,6 +356,7 @@ def render_points(
cmap=cmap,
norm=norm,
size=size,
table_name=table_name,
)

sdata = self._copy()
Expand All@@ -378,18 +370,20 @@ def render_points(
**kwargs,
)

sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
elements=params_dict["elements"],
color=params_dict["color"],
col_for_color=params_dict["col_for_color"],
groups=params_dict["groups"],
cmap_params=cmap_params,
palette=params_dict["palette"],
alpha=alpha,
transfunc=kwargs.get("transfunc", None),
size=size,
element_table_mapping=table_name,
)
for element, param_values in params_dict.items():
sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
element=element,
color=param_values["color"],
col_for_color=param_values["col_for_color"],
groups=param_values["groups"],
cmap_params=cmap_params,
palette=param_values["palette"],
alpha=param_values["alpha"],
transfunc=kwargs.get("transfunc", None),
size=param_values["size"],
table_name=param_values["table_name"],
)
n_steps += 1

return sdata

Expand DownExpand Up@@ -885,7 +879,6 @@ def show(
)

if wanted_points_on_this_cs:
params_copy = _update_params(sdata, params_copy, wanted_points_on_this_cs, "points")
_render_points(
sdata=sdata,
render_params=params_copy,
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 74 additions & 81 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,6 +52,7 @@
_set_outline,
_update_params,
_validate_image_render_params,
_validate_points_render_params,
_validate_render_params,
_validate_shape_render_params,
_validate_show_parameters,
Expand DownExpand Up@@ -175,40 +176,37 @@ def render_shapes(
Parameters
----------
element : str | None, optional
The name of the shapes element to render. If `None`, all shapes
elements in the `SpatialData` object will be used. If you would like multiple specific elements to be
rendered, please chain the calls to render: pl.render_shapes(...).pl.render_shapes(...).pl.show()
The name of the shapes element to render. If `None`, all shapes elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_shapes(...).pl.render_shapes(...).pl.show().
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If element is None, if possible the color will
be broadcasted to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the elements.
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
fill_alpha : float | int, default 1.0
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the
user, this value will multiply the value present in the cmap.
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the user, this value
will multiply the value present in the cmap.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. If elment is None,
broadcasting behaviour is attempted (use the same values for all elements).
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. If element is None, broadcasting behaviour is
attempted (use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
outline : bool, default False
If `True`, a border around the shape elements is plotted.
outline_width : float | int, default 1.5
Width of the border.
outline_color : str | list[float], default "#000000ff"
Color of the border. Can either be a named color ("red"), a hex
representation ("#000000ff") or a list of floats that represent RGB/RGBA
values (1.0, 0.0, 0.0, 1.0).
Color of the border. Can either be a named color ("red"), a hex representation ("#000000ff") or a list of
floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0).
outline_alpha : float | int, default 1.0
Alpha value for the outline of shapes.
cmap : Colormap | str | None, optional
Expand All@@ -217,7 +215,7 @@ def render_shapes(
Colormap normalization for continuous annotations.
scale : float | int, default 1.0
Value to scale circles, if present.
table_name:
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
Expand DownExpand Up@@ -284,67 +282,61 @@ def render_shapes(

return sdata

@deprecation_alias(elements="element", version="0.3.0")
def render_points(
self,
elements: list[str] | str | None = None,
color: list[str | None] | str | None = None,
element: str | None = None,
color: str | None = None,
alpha: float | int = 1.0,
groups: list[list[str | None]] | list[str | None] | str | None = None,
palette: list[list[str | None]] | list[str | None] | str | None = None,
groups: list[str] | str | None = None,
palette: list[str] | str | None = None,
na_color: ColorLike | None = "lightgrey",
cmap: Colormap | str | None = None,
norm: None | Normalize = None,
size: float | int = 1.0,
table_name: list[str] | str | None = None,
table_name: str | None = None,
**kwargs: Any,
) -> sd.SpatialData:
"""
Render points elements in SpatialData.

Parameters
----------
elements : list[str] | str | None, optional
The name(s) of the points element(s) to render. If `None`, all points
elements in the `SpatialData` object will be used.
color : list[str | None] | str | None
Can either be string(s) representing a color-like or key(s) in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If provided as a list, the length of the list
must match the number of elements that will be plotted. Otherwise, if possible the color will be broadcasted
to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the element.
element : str | None, optional
The name of the points element to render. If `None`, all points elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_points(...).pl.render_points(...).pl.show()
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
alpha : float | int, default 1.0
Alpha value for the points.
groups : list[list[str | None]] | list[str | None] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. In general the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
discrete labels to be visualized. If not provided as list of lists, broadcasting behaviour is attempted
(use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
palette : list[list[str | None]] | list[str | None] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. Similarly to groups, in the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
palettes (one per group) to be visualized. If not provided as list of lists, broadcasting behaviour is
attempted (use the same values for all elements).
na_color : str | list[float] | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
cmap : Colormap | str | None, optional
Colormap for discrete or continuous annotations using 'color', see
:class:`matplotlib.colors.Colormap`. If no palette is given and `color`
refers to a categorical, the colors are sampled from this colormap.
Colormap for discrete or continuous annotations using 'color', see :class:`matplotlib.colors.Colormap`. If
no palette is given and `color` refers to a categorical, the colors are sampled from this colormap.
norm : bool | Normalize, default False
Colormap normalization for continuous annotations.
size : float | int, default 1.0
Size of the points
table_name:
Name of the table(s) containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If multiple names are given in a list than the
length must be equal to the number of spatial elements being plotted.
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
kwargs
Additional arguments to be passed to cmap and norm.

Expand All@@ -353,10 +345,9 @@ def render_points(
sd.SpatialData
The modified SpatialData object with the rendered shapes.
"""
params_dict = _validate_render_params(
"points",
params_dict = _validate_points_render_params(
self._sdata,
elements=elements,
element=element,
alpha=alpha,
color=color,
groups=groups,
Expand All@@ -365,6 +356,7 @@ def render_points(
cmap=cmap,
norm=norm,
size=size,
table_name=table_name,
)

sdata = self._copy()
Expand All@@ -378,18 +370,20 @@ def render_points(
**kwargs,
)

sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
elements=params_dict["elements"],
color=params_dict["color"],
col_for_color=params_dict["col_for_color"],
groups=params_dict["groups"],
cmap_params=cmap_params,
palette=params_dict["palette"],
alpha=alpha,
transfunc=kwargs.get("transfunc", None),
size=size,
element_table_mapping=table_name,
)
for element, param_values in params_dict.items():
sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
element=element,
color=param_values["color"],
col_for_color=param_values["col_for_color"],
groups=param_values["groups"],
cmap_params=cmap_params,
palette=param_values["palette"],
alpha=param_values["alpha"],
transfunc=kwargs.get("transfunc", None),
size=param_values["size"],
table_name=param_values["table_name"],
)
n_steps += 1

return sdata

Expand DownExpand Up@@ -885,7 +879,6 @@ def show(
)

if wanted_points_on_this_cs:
params_copy = _update_params(sdata, params_copy, wanted_points_on_this_cs, "points")
_render_points(
sdata=sdata,
render_params=params_copy,
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 74 additions & 81 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,6 +52,7 @@
_set_outline,
_update_params,
_validate_image_render_params,
_validate_points_render_params,
_validate_render_params,
_validate_shape_render_params,
_validate_show_parameters,
Expand DownExpand Up@@ -175,40 +176,37 @@ def render_shapes(
Parameters
----------
element : str | None, optional
The name of the shapes element to render. If `None`, all shapes
elements in the `SpatialData` object will be used. If you would like multiple specific elements to be
rendered, please chain the calls to render: pl.render_shapes(...).pl.render_shapes(...).pl.show()
The name of the shapes element to render. If `None`, all shapes elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_shapes(...).pl.render_shapes(...).pl.show().
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If element is None, if possible the color will
be broadcasted to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the elements.
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
fill_alpha : float | int, default 1.0
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the
user, this value will multiply the value present in the cmap.
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the user, this value
will multiply the value present in the cmap.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. If elment is None,
broadcasting behaviour is attempted (use the same values for all elements).
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. If element is None, broadcasting behaviour is
attempted (use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
outline : bool, default False
If `True`, a border around the shape elements is plotted.
outline_width : float | int, default 1.5
Width of the border.
outline_color : str | list[float], default "#000000ff"
Color of the border. Can either be a named color ("red"), a hex
representation ("#000000ff") or a list of floats that represent RGB/RGBA
values (1.0, 0.0, 0.0, 1.0).
Color of the border. Can either be a named color ("red"), a hex representation ("#000000ff") or a list of
floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0).
outline_alpha : float | int, default 1.0
Alpha value for the outline of shapes.
cmap : Colormap | str | None, optional
Expand All@@ -217,7 +215,7 @@ def render_shapes(
Colormap normalization for continuous annotations.
scale : float | int, default 1.0
Value to scale circles, if present.
table_name:
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
Expand DownExpand Up@@ -284,67 +282,61 @@ def render_shapes(

return sdata

@deprecation_alias(elements="element", version="0.3.0")
def render_points(
self,
elements: list[str] | str | None = None,
color: list[str | None] | str | None = None,
element: str | None = None,
color: str | None = None,
alpha: float | int = 1.0,
groups: list[list[str | None]] | list[str | None] | str | None = None,
palette: list[list[str | None]] | list[str | None] | str | None = None,
groups: list[str] | str | None = None,
palette: list[str] | str | None = None,
na_color: ColorLike | None = "lightgrey",
cmap: Colormap | str | None = None,
norm: None | Normalize = None,
size: float | int = 1.0,
table_name: list[str] | str | None = None,
table_name: str | None = None,
**kwargs: Any,
) -> sd.SpatialData:
"""
Render points elements in SpatialData.

Parameters
----------
elements : list[str] | str | None, optional
The name(s) of the points element(s) to render. If `None`, all points
elements in the `SpatialData` object will be used.
color : list[str | None] | str | None
Can either be string(s) representing a color-like or key(s) in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If provided as a list, the length of the list
must match the number of elements that will be plotted. Otherwise, if possible the color will be broadcasted
to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the element.
element : str | None, optional
The name of the points element to render. If `None`, all points elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_points(...).pl.render_points(...).pl.show()
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
alpha : float | int, default 1.0
Alpha value for the points.
groups : list[list[str | None]] | list[str | None] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. In general the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
discrete labels to be visualized. If not provided as list of lists, broadcasting behaviour is attempted
(use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
palette : list[list[str | None]] | list[str | None] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. Similarly to groups, in the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
palettes (one per group) to be visualized. If not provided as list of lists, broadcasting behaviour is
attempted (use the same values for all elements).
na_color : str | list[float] | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
cmap : Colormap | str | None, optional
Colormap for discrete or continuous annotations using 'color', see
:class:`matplotlib.colors.Colormap`. If no palette is given and `color`
refers to a categorical, the colors are sampled from this colormap.
Colormap for discrete or continuous annotations using 'color', see :class:`matplotlib.colors.Colormap`. If
no palette is given and `color` refers to a categorical, the colors are sampled from this colormap.
norm : bool | Normalize, default False
Colormap normalization for continuous annotations.
size : float | int, default 1.0
Size of the points
table_name:
Name of the table(s) containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If multiple names are given in a list than the
length must be equal to the number of spatial elements being plotted.
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
kwargs
Additional arguments to be passed to cmap and norm.

Expand All@@ -353,10 +345,9 @@ def render_points(
sd.SpatialData
The modified SpatialData object with the rendered shapes.
"""
params_dict = _validate_render_params(
"points",
params_dict = _validate_points_render_params(
self._sdata,
elements=elements,
element=element,
alpha=alpha,
color=color,
groups=groups,
Expand All@@ -365,6 +356,7 @@ def render_points(
cmap=cmap,
norm=norm,
size=size,
table_name=table_name,
)

sdata = self._copy()
Expand All@@ -378,18 +370,20 @@ def render_points(
**kwargs,
)

sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
elements=params_dict["elements"],
color=params_dict["color"],
col_for_color=params_dict["col_for_color"],
groups=params_dict["groups"],
cmap_params=cmap_params,
palette=params_dict["palette"],
alpha=alpha,
transfunc=kwargs.get("transfunc", None),
size=size,
element_table_mapping=table_name,
)
for element, param_values in params_dict.items():
sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
element=element,
color=param_values["color"],
col_for_color=param_values["col_for_color"],
groups=param_values["groups"],
cmap_params=cmap_params,
palette=param_values["palette"],
alpha=param_values["alpha"],
transfunc=kwargs.get("transfunc", None),
size=param_values["size"],
table_name=param_values["table_name"],
)
n_steps += 1

return sdata

Expand DownExpand Up@@ -885,7 +879,6 @@ def show(
)

if wanted_points_on_this_cs:
params_copy = _update_params(sdata, params_copy, wanted_points_on_this_cs, "points")
_render_points(
sdata=sdata,
render_params=params_copy,
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 74 additions & 81 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,6 +52,7 @@
_set_outline,
_update_params,
_validate_image_render_params,
_validate_points_render_params,
_validate_render_params,
_validate_shape_render_params,
_validate_show_parameters,
Expand DownExpand Up@@ -175,40 +176,37 @@ def render_shapes(
Parameters
----------
element : str | None, optional
The name of the shapes element to render. If `None`, all shapes
elements in the `SpatialData` object will be used. If you would like multiple specific elements to be
rendered, please chain the calls to render: pl.render_shapes(...).pl.render_shapes(...).pl.show()
The name of the shapes element to render. If `None`, all shapes elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_shapes(...).pl.render_shapes(...).pl.show().
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If element is None, if possible the color will
be broadcasted to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the elements.
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
fill_alpha : float | int, default 1.0
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the
user, this value will multiply the value present in the cmap.
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the user, this value
will multiply the value present in the cmap.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. If elment is None,
broadcasting behaviour is attempted (use the same values for all elements).
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. If element is None, broadcasting behaviour is
attempted (use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
outline : bool, default False
If `True`, a border around the shape elements is plotted.
outline_width : float | int, default 1.5
Width of the border.
outline_color : str | list[float], default "#000000ff"
Color of the border. Can either be a named color ("red"), a hex
representation ("#000000ff") or a list of floats that represent RGB/RGBA
values (1.0, 0.0, 0.0, 1.0).
Color of the border. Can either be a named color ("red"), a hex representation ("#000000ff") or a list of
floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0).
outline_alpha : float | int, default 1.0
Alpha value for the outline of shapes.
cmap : Colormap | str | None, optional
Expand All@@ -217,7 +215,7 @@ def render_shapes(
Colormap normalization for continuous annotations.
scale : float | int, default 1.0
Value to scale circles, if present.
table_name:
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
Expand DownExpand Up@@ -284,67 +282,61 @@ def render_shapes(

return sdata

@deprecation_alias(elements="element", version="0.3.0")
def render_points(
self,
elements: list[str] | str | None = None,
color: list[str | None] | str | None = None,
element: str | None = None,
color: str | None = None,
alpha: float | int = 1.0,
groups: list[list[str | None]] | list[str | None] | str | None = None,
palette: list[list[str | None]] | list[str | None] | str | None = None,
groups: list[str] | str | None = None,
palette: list[str] | str | None = None,
na_color: ColorLike | None = "lightgrey",
cmap: Colormap | str | None = None,
norm: None | Normalize = None,
size: float | int = 1.0,
table_name: list[str] | str | None = None,
table_name: str | None = None,
**kwargs: Any,
) -> sd.SpatialData:
"""
Render points elements in SpatialData.

Parameters
----------
elements : list[str] | str | None, optional
The name(s) of the points element(s) to render. If `None`, all points
elements in the `SpatialData` object will be used.
color : list[str | None] | str | None
Can either be string(s) representing a color-like or key(s) in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If provided as a list, the length of the list
must match the number of elements that will be plotted. Otherwise, if possible the color will be broadcasted
to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the element.
element : str | None, optional
The name of the points element to render. If `None`, all points elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_points(...).pl.render_points(...).pl.show()
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
alpha : float | int, default 1.0
Alpha value for the points.
groups : list[list[str | None]] | list[str | None] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. In general the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
discrete labels to be visualized. If not provided as list of lists, broadcasting behaviour is attempted
(use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
palette : list[list[str | None]] | list[str | None] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. Similarly to groups, in the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
palettes (one per group) to be visualized. If not provided as list of lists, broadcasting behaviour is
attempted (use the same values for all elements).
na_color : str | list[float] | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
cmap : Colormap | str | None, optional
Colormap for discrete or continuous annotations using 'color', see
:class:`matplotlib.colors.Colormap`. If no palette is given and `color`
refers to a categorical, the colors are sampled from this colormap.
Colormap for discrete or continuous annotations using 'color', see :class:`matplotlib.colors.Colormap`. If
no palette is given and `color` refers to a categorical, the colors are sampled from this colormap.
norm : bool | Normalize, default False
Colormap normalization for continuous annotations.
size : float | int, default 1.0
Size of the points
table_name:
Name of the table(s) containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If multiple names are given in a list than the
length must be equal to the number of spatial elements being plotted.
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
kwargs
Additional arguments to be passed to cmap and norm.

Expand All@@ -353,10 +345,9 @@ def render_points(
sd.SpatialData
The modified SpatialData object with the rendered shapes.
"""
params_dict = _validate_render_params(
"points",
params_dict = _validate_points_render_params(
self._sdata,
elements=elements,
element=element,
alpha=alpha,
color=color,
groups=groups,
Expand All@@ -365,6 +356,7 @@ def render_points(
cmap=cmap,
norm=norm,
size=size,
table_name=table_name,
)

sdata = self._copy()
Expand All@@ -378,18 +370,20 @@ def render_points(
**kwargs,
)

sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
elements=params_dict["elements"],
color=params_dict["color"],
col_for_color=params_dict["col_for_color"],
groups=params_dict["groups"],
cmap_params=cmap_params,
palette=params_dict["palette"],
alpha=alpha,
transfunc=kwargs.get("transfunc", None),
size=size,
element_table_mapping=table_name,
)
for element, param_values in params_dict.items():
sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
element=element,
color=param_values["color"],
col_for_color=param_values["col_for_color"],
groups=param_values["groups"],
cmap_params=cmap_params,
palette=param_values["palette"],
alpha=param_values["alpha"],
transfunc=kwargs.get("transfunc", None),
size=param_values["size"],
table_name=param_values["table_name"],
)
n_steps += 1

return sdata

Expand DownExpand Up@@ -885,7 +879,6 @@ def show(
)

if wanted_points_on_this_cs:
params_copy = _update_params(sdata, params_copy, wanted_points_on_this_cs, "points")
_render_points(
sdata=sdata,
render_params=params_copy,
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 74 additions & 81 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,6 +52,7 @@
_set_outline,
_update_params,
_validate_image_render_params,
_validate_points_render_params,
_validate_render_params,
_validate_shape_render_params,
_validate_show_parameters,
Expand DownExpand Up@@ -175,40 +176,37 @@ def render_shapes(
Parameters
----------
element : str | None, optional
The name of the shapes element to render. If `None`, all shapes
elements in the `SpatialData` object will be used. If you would like multiple specific elements to be
rendered, please chain the calls to render: pl.render_shapes(...).pl.render_shapes(...).pl.show()
The name of the shapes element to render. If `None`, all shapes elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_shapes(...).pl.render_shapes(...).pl.show().
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If element is None, if possible the color will
be broadcasted to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the elements.
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
fill_alpha : float | int, default 1.0
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the
user, this value will multiply the value present in the cmap.
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the user, this value
will multiply the value present in the cmap.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. If elment is None,
broadcasting behaviour is attempted (use the same values for all elements).
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. If element is None, broadcasting behaviour is
attempted (use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
outline : bool, default False
If `True`, a border around the shape elements is plotted.
outline_width : float | int, default 1.5
Width of the border.
outline_color : str | list[float], default "#000000ff"
Color of the border. Can either be a named color ("red"), a hex
representation ("#000000ff") or a list of floats that represent RGB/RGBA
values (1.0, 0.0, 0.0, 1.0).
Color of the border. Can either be a named color ("red"), a hex representation ("#000000ff") or a list of
floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0).
outline_alpha : float | int, default 1.0
Alpha value for the outline of shapes.
cmap : Colormap | str | None, optional
Expand All@@ -217,7 +215,7 @@ def render_shapes(
Colormap normalization for continuous annotations.
scale : float | int, default 1.0
Value to scale circles, if present.
table_name:
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
Expand DownExpand Up@@ -284,67 +282,61 @@ def render_shapes(

return sdata

@deprecation_alias(elements="element", version="0.3.0")
def render_points(
self,
elements: list[str] | str | None = None,
color: list[str | None] | str | None = None,
element: str | None = None,
color: str | None = None,
alpha: float | int = 1.0,
groups: list[list[str | None]] | list[str | None] | str | None = None,
palette: list[list[str | None]] | list[str | None] | str | None = None,
groups: list[str] | str | None = None,
palette: list[str] | str | None = None,
na_color: ColorLike | None = "lightgrey",
cmap: Colormap | str | None = None,
norm: None | Normalize = None,
size: float | int = 1.0,
table_name: list[str] | str | None = None,
table_name: str | None = None,
**kwargs: Any,
) -> sd.SpatialData:
"""
Render points elements in SpatialData.

Parameters
----------
elements : list[str] | str | None, optional
The name(s) of the points element(s) to render. If `None`, all points
elements in the `SpatialData` object will be used.
color : list[str | None] | str | None
Can either be string(s) representing a color-like or key(s) in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If provided as a list, the length of the list
must match the number of elements that will be plotted. Otherwise, if possible the color will be broadcasted
to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the element.
element : str | None, optional
The name of the points element to render. If `None`, all points elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_points(...).pl.render_points(...).pl.show()
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
alpha : float | int, default 1.0
Alpha value for the points.
groups : list[list[str | None]] | list[str | None] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. In general the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
discrete labels to be visualized. If not provided as list of lists, broadcasting behaviour is attempted
(use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
palette : list[list[str | None]] | list[str | None] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. Similarly to groups, in the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
palettes (one per group) to be visualized. If not provided as list of lists, broadcasting behaviour is
attempted (use the same values for all elements).
na_color : str | list[float] | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
cmap : Colormap | str | None, optional
Colormap for discrete or continuous annotations using 'color', see
:class:`matplotlib.colors.Colormap`. If no palette is given and `color`
refers to a categorical, the colors are sampled from this colormap.
Colormap for discrete or continuous annotations using 'color', see :class:`matplotlib.colors.Colormap`. If
no palette is given and `color` refers to a categorical, the colors are sampled from this colormap.
norm : bool | Normalize, default False
Colormap normalization for continuous annotations.
size : float | int, default 1.0
Size of the points
table_name:
Name of the table(s) containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If multiple names are given in a list than the
length must be equal to the number of spatial elements being plotted.
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
kwargs
Additional arguments to be passed to cmap and norm.

Expand All@@ -353,10 +345,9 @@ def render_points(
sd.SpatialData
The modified SpatialData object with the rendered shapes.
"""
params_dict = _validate_render_params(
"points",
params_dict = _validate_points_render_params(
self._sdata,
elements=elements,
element=element,
alpha=alpha,
color=color,
groups=groups,
Expand All@@ -365,6 +356,7 @@ def render_points(
cmap=cmap,
norm=norm,
size=size,
table_name=table_name,
)

sdata = self._copy()
Expand All@@ -378,18 +370,20 @@ def render_points(
**kwargs,
)

sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
elements=params_dict["elements"],
color=params_dict["color"],
col_for_color=params_dict["col_for_color"],
groups=params_dict["groups"],
cmap_params=cmap_params,
palette=params_dict["palette"],
alpha=alpha,
transfunc=kwargs.get("transfunc", None),
size=size,
element_table_mapping=table_name,
)
for element, param_values in params_dict.items():
sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
element=element,
color=param_values["color"],
col_for_color=param_values["col_for_color"],
groups=param_values["groups"],
cmap_params=cmap_params,
palette=param_values["palette"],
alpha=param_values["alpha"],
transfunc=kwargs.get("transfunc", None),
size=param_values["size"],
table_name=param_values["table_name"],
)
n_steps += 1

return sdata

Expand DownExpand Up@@ -885,7 +879,6 @@ def show(
)

if wanted_points_on_this_cs:
params_copy = _update_params(sdata, params_copy, wanted_points_on_this_cs, "points")
_render_points(
sdata=sdata,
render_params=params_copy,
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 74 additions & 81 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,6 +52,7 @@
_set_outline,
_update_params,
_validate_image_render_params,
_validate_points_render_params,
_validate_render_params,
_validate_shape_render_params,
_validate_show_parameters,
Expand DownExpand Up@@ -175,40 +176,37 @@ def render_shapes(
Parameters
----------
element : str | None, optional
The name of the shapes element to render. If `None`, all shapes
elements in the `SpatialData` object will be used. If you would like multiple specific elements to be
rendered, please chain the calls to render: pl.render_shapes(...).pl.render_shapes(...).pl.show()
The name of the shapes element to render. If `None`, all shapes elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_shapes(...).pl.render_shapes(...).pl.show().
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If element is None, if possible the color will
be broadcasted to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the elements.
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
fill_alpha : float | int, default 1.0
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the
user, this value will multiply the value present in the cmap.
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the user, this value
will multiply the value present in the cmap.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. If elment is None,
broadcasting behaviour is attempted (use the same values for all elements).
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. If element is None, broadcasting behaviour is
attempted (use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
outline : bool, default False
If `True`, a border around the shape elements is plotted.
outline_width : float | int, default 1.5
Width of the border.
outline_color : str | list[float], default "#000000ff"
Color of the border. Can either be a named color ("red"), a hex
representation ("#000000ff") or a list of floats that represent RGB/RGBA
values (1.0, 0.0, 0.0, 1.0).
Color of the border. Can either be a named color ("red"), a hex representation ("#000000ff") or a list of
floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0).
outline_alpha : float | int, default 1.0
Alpha value for the outline of shapes.
cmap : Colormap | str | None, optional
Expand All@@ -217,7 +215,7 @@ def render_shapes(
Colormap normalization for continuous annotations.
scale : float | int, default 1.0
Value to scale circles, if present.
table_name:
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
Expand DownExpand Up@@ -284,67 +282,61 @@ def render_shapes(

return sdata

@deprecation_alias(elements="element", version="0.3.0")
def render_points(
self,
elements: list[str] | str | None = None,
color: list[str | None] | str | None = None,
element: str | None = None,
color: str | None = None,
alpha: float | int = 1.0,
groups: list[list[str | None]] | list[str | None] | str | None = None,
palette: list[list[str | None]] | list[str | None] | str | None = None,
groups: list[str] | str | None = None,
palette: list[str] | str | None = None,
na_color: ColorLike | None = "lightgrey",
cmap: Colormap | str | None = None,
norm: None | Normalize = None,
size: float | int = 1.0,
table_name: list[str] | str | None = None,
table_name: str | None = None,
**kwargs: Any,
) -> sd.SpatialData:
"""
Render points elements in SpatialData.

Parameters
----------
elements : list[str] | str | None, optional
The name(s) of the points element(s) to render. If `None`, all points
elements in the `SpatialData` object will be used.
color : list[str | None] | str | None
Can either be string(s) representing a color-like or key(s) in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If provided as a list, the length of the list
must match the number of elements that will be plotted. Otherwise, if possible the color will be broadcasted
to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the element.
element : str | None, optional
The name of the points element to render. If `None`, all points elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_points(...).pl.render_points(...).pl.show()
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
alpha : float | int, default 1.0
Alpha value for the points.
groups : list[list[str | None]] | list[str | None] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. In general the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
discrete labels to be visualized. If not provided as list of lists, broadcasting behaviour is attempted
(use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
palette : list[list[str | None]] | list[str | None] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. Similarly to groups, in the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
palettes (one per group) to be visualized. If not provided as list of lists, broadcasting behaviour is
attempted (use the same values for all elements).
na_color : str | list[float] | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
cmap : Colormap | str | None, optional
Colormap for discrete or continuous annotations using 'color', see
:class:`matplotlib.colors.Colormap`. If no palette is given and `color`
refers to a categorical, the colors are sampled from this colormap.
Colormap for discrete or continuous annotations using 'color', see :class:`matplotlib.colors.Colormap`. If
no palette is given and `color` refers to a categorical, the colors are sampled from this colormap.
norm : bool | Normalize, default False
Colormap normalization for continuous annotations.
size : float | int, default 1.0
Size of the points
table_name:
Name of the table(s) containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If multiple names are given in a list than the
length must be equal to the number of spatial elements being plotted.
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
kwargs
Additional arguments to be passed to cmap and norm.

Expand All@@ -353,10 +345,9 @@ def render_points(
sd.SpatialData
The modified SpatialData object with the rendered shapes.
"""
params_dict = _validate_render_params(
"points",
params_dict = _validate_points_render_params(
self._sdata,
elements=elements,
element=element,
alpha=alpha,
color=color,
groups=groups,
Expand All@@ -365,6 +356,7 @@ def render_points(
cmap=cmap,
norm=norm,
size=size,
table_name=table_name,
)

sdata = self._copy()
Expand All@@ -378,18 +370,20 @@ def render_points(
**kwargs,
)

sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
elements=params_dict["elements"],
color=params_dict["color"],
col_for_color=params_dict["col_for_color"],
groups=params_dict["groups"],
cmap_params=cmap_params,
palette=params_dict["palette"],
alpha=alpha,
transfunc=kwargs.get("transfunc", None),
size=size,
element_table_mapping=table_name,
)
for element, param_values in params_dict.items():
sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
element=element,
color=param_values["color"],
col_for_color=param_values["col_for_color"],
groups=param_values["groups"],
cmap_params=cmap_params,
palette=param_values["palette"],
alpha=param_values["alpha"],
transfunc=kwargs.get("transfunc", None),
size=param_values["size"],
table_name=param_values["table_name"],
)
n_steps += 1

return sdata

Expand DownExpand Up@@ -885,7 +879,6 @@ def show(
)

if wanted_points_on_this_cs:
params_copy = _update_params(sdata, params_copy, wanted_points_on_this_cs, "points")
_render_points(
sdata=sdata,
render_params=params_copy,
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 74 additions & 81 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,6 +52,7 @@
_set_outline,
_update_params,
_validate_image_render_params,
_validate_points_render_params,
_validate_render_params,
_validate_shape_render_params,
_validate_show_parameters,
Expand DownExpand Up@@ -175,40 +176,37 @@ def render_shapes(
Parameters
----------
element : str | None, optional
The name of the shapes element to render. If `None`, all shapes
elements in the `SpatialData` object will be used. If you would like multiple specific elements to be
rendered, please chain the calls to render: pl.render_shapes(...).pl.render_shapes(...).pl.show()
The name of the shapes element to render. If `None`, all shapes elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_shapes(...).pl.render_shapes(...).pl.show().
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If element is None, if possible the color will
be broadcasted to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the elements.
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
fill_alpha : float | int, default 1.0
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the
user, this value will multiply the value present in the cmap.
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the user, this value
will multiply the value present in the cmap.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. If elment is None,
broadcasting behaviour is attempted (use the same values for all elements).
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. If element is None, broadcasting behaviour is
attempted (use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
outline : bool, default False
If `True`, a border around the shape elements is plotted.
outline_width : float | int, default 1.5
Width of the border.
outline_color : str | list[float], default "#000000ff"
Color of the border. Can either be a named color ("red"), a hex
representation ("#000000ff") or a list of floats that represent RGB/RGBA
values (1.0, 0.0, 0.0, 1.0).
Color of the border. Can either be a named color ("red"), a hex representation ("#000000ff") or a list of
floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0).
outline_alpha : float | int, default 1.0
Alpha value for the outline of shapes.
cmap : Colormap | str | None, optional
Expand All@@ -217,7 +215,7 @@ def render_shapes(
Colormap normalization for continuous annotations.
scale : float | int, default 1.0
Value to scale circles, if present.
table_name:
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
Expand DownExpand Up@@ -284,67 +282,61 @@ def render_shapes(

return sdata

@deprecation_alias(elements="element", version="0.3.0")
def render_points(
self,
elements: list[str] | str | None = None,
color: list[str | None] | str | None = None,
element: str | None = None,
color: str | None = None,
alpha: float | int = 1.0,
groups: list[list[str | None]] | list[str | None] | str | None = None,
palette: list[list[str | None]] | list[str | None] | str | None = None,
groups: list[str] | str | None = None,
palette: list[str] | str | None = None,
na_color: ColorLike | None = "lightgrey",
cmap: Colormap | str | None = None,
norm: None | Normalize = None,
size: float | int = 1.0,
table_name: list[str] | str | None = None,
table_name: str | None = None,
**kwargs: Any,
) -> sd.SpatialData:
"""
Render points elements in SpatialData.

Parameters
----------
elements : list[str] | str | None, optional
The name(s) of the points element(s) to render. If `None`, all points
elements in the `SpatialData` object will be used.
color : list[str | None] | str | None
Can either be string(s) representing a color-like or key(s) in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If provided as a list, the length of the list
must match the number of elements that will be plotted. Otherwise, if possible the color will be broadcasted
to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the element.
element : str | None, optional
The name of the points element to render. If `None`, all points elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_points(...).pl.render_points(...).pl.show()
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
alpha : float | int, default 1.0
Alpha value for the points.
groups : list[list[str | None]] | list[str | None] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. In general the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
discrete labels to be visualized. If not provided as list of lists, broadcasting behaviour is attempted
(use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
palette : list[list[str | None]] | list[str | None] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. Similarly to groups, in the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
palettes (one per group) to be visualized. If not provided as list of lists, broadcasting behaviour is
attempted (use the same values for all elements).
na_color : str | list[float] | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
cmap : Colormap | str | None, optional
Colormap for discrete or continuous annotations using 'color', see
:class:`matplotlib.colors.Colormap`. If no palette is given and `color`
refers to a categorical, the colors are sampled from this colormap.
Colormap for discrete or continuous annotations using 'color', see :class:`matplotlib.colors.Colormap`. If
no palette is given and `color` refers to a categorical, the colors are sampled from this colormap.
norm : bool | Normalize, default False
Colormap normalization for continuous annotations.
size : float | int, default 1.0
Size of the points
table_name:
Name of the table(s) containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If multiple names are given in a list than the
length must be equal to the number of spatial elements being plotted.
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
kwargs
Additional arguments to be passed to cmap and norm.

Expand All@@ -353,10 +345,9 @@ def render_points(
sd.SpatialData
The modified SpatialData object with the rendered shapes.
"""
params_dict = _validate_render_params(
"points",
params_dict = _validate_points_render_params(
self._sdata,
elements=elements,
element=element,
alpha=alpha,
color=color,
groups=groups,
Expand All@@ -365,6 +356,7 @@ def render_points(
cmap=cmap,
norm=norm,
size=size,
table_name=table_name,
)

sdata = self._copy()
Expand All@@ -378,18 +370,20 @@ def render_points(
**kwargs,
)

sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
elements=params_dict["elements"],
color=params_dict["color"],
col_for_color=params_dict["col_for_color"],
groups=params_dict["groups"],
cmap_params=cmap_params,
palette=params_dict["palette"],
alpha=alpha,
transfunc=kwargs.get("transfunc", None),
size=size,
element_table_mapping=table_name,
)
for element, param_values in params_dict.items():
sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
element=element,
color=param_values["color"],
col_for_color=param_values["col_for_color"],
groups=param_values["groups"],
cmap_params=cmap_params,
palette=param_values["palette"],
alpha=param_values["alpha"],
transfunc=kwargs.get("transfunc", None),
size=param_values["size"],
table_name=param_values["table_name"],
)
n_steps += 1

return sdata

Expand DownExpand Up@@ -885,7 +879,6 @@ def show(
)

if wanted_points_on_this_cs:
params_copy = _update_params(sdata, params_copy, wanted_points_on_this_cs, "points")
_render_points(
sdata=sdata,
render_params=params_copy,
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 74 additions & 81 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,6 +52,7 @@
_set_outline,
_update_params,
_validate_image_render_params,
_validate_points_render_params,
_validate_render_params,
_validate_shape_render_params,
_validate_show_parameters,
Expand DownExpand Up@@ -175,40 +176,37 @@ def render_shapes(
Parameters
----------
element : str | None, optional
The name of the shapes element to render. If `None`, all shapes
elements in the `SpatialData` object will be used. If you would like multiple specific elements to be
rendered, please chain the calls to render: pl.render_shapes(...).pl.render_shapes(...).pl.show()
The name of the shapes element to render. If `None`, all shapes elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_shapes(...).pl.render_shapes(...).pl.show().
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If element is None, if possible the color will
be broadcasted to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the elements.
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
fill_alpha : float | int, default 1.0
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the
user, this value will multiply the value present in the cmap.
Alpha value for the fill of shapes. If the alpha channel is present in a cmap passed by the user, this value
will multiply the value present in the cmap.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. If elment is None,
broadcasting behaviour is attempted (use the same values for all elements).
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. If element is None, broadcasting behaviour is
attempted (use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
outline : bool, default False
If `True`, a border around the shape elements is plotted.
outline_width : float | int, default 1.5
Width of the border.
outline_color : str | list[float], default "#000000ff"
Color of the border. Can either be a named color ("red"), a hex
representation ("#000000ff") or a list of floats that represent RGB/RGBA
values (1.0, 0.0, 0.0, 1.0).
Color of the border. Can either be a named color ("red"), a hex representation ("#000000ff") or a list of
floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0).
outline_alpha : float | int, default 1.0
Alpha value for the outline of shapes.
cmap : Colormap | str | None, optional
Expand All@@ -217,7 +215,7 @@ def render_shapes(
Colormap normalization for continuous annotations.
scale : float | int, default 1.0
Value to scale circles, if present.
table_name:
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
Expand DownExpand Up@@ -284,67 +282,61 @@ def render_shapes(

return sdata

@deprecation_alias(elements="element", version="0.3.0")
def render_points(
self,
elements: list[str] | str | None = None,
color: list[str | None] | str | None = None,
element: str | None = None,
color: str | None = None,
alpha: float | int = 1.0,
groups: list[list[str | None]] | list[str | None] | str | None = None,
palette: list[list[str | None]] | list[str | None] | str | None = None,
groups: list[str] | str | None = None,
palette: list[str] | str | None = None,
na_color: ColorLike | None = "lightgrey",
cmap: Colormap | str | None = None,
norm: None | Normalize = None,
size: float | int = 1.0,
table_name: list[str] | str | None = None,
table_name: str | None = None,
**kwargs: Any,
) -> sd.SpatialData:
"""
Render points elements in SpatialData.

Parameters
----------
elements : list[str] | str | None, optional
The name(s) of the points element(s) to render. If `None`, all points
elements in the `SpatialData` object will be used.
color : list[str | None] | str | None
Can either be string(s) representing a color-like or key(s) in :attr:`sdata.table.obs`. The latter
can be used to color by categorical or continuous variables. If provided as a list, the length of the list
must match the number of elements that will be plotted. Otherwise, if possible the color will be broadcasted
to all elements. For this, the table in which the color key is found must
annotate the respective element (region must be set to the specific element). If the color column is found
in multiple locations, please provide the table_name to be used for the element.
element : str | None, optional
The name of the points element to render. If `None`, all points elements in the `SpatialData` object will be
used. If you would like multiple specific elements to be rendered, please chain the calls to render:
pl.render_points(...).pl.render_points(...).pl.show()
color : str | None
Can either be string representing a color-like or key in :attr:`sdata.table.obs`. The latter can be used to
color by categorical or continuous variables. If `element` is `None`, if possible the color will be
broadcasted to all elements. For this, the table in which the color key is found must annotate the
respective element (region must be set to the specific element). If the color column is found in multiple
locations, please provide the table_name to be used for the elements.
alpha : float | int, default 1.0
Alpha value for the points.
groups : list[list[str | None]] | list[str | None] | str | None
When using `color` and the key represents discrete labels, `groups`
can be used to show only a subset of them. Other values are set to NA. In general the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
discrete labels to be visualized. If not provided as list of lists, broadcasting behaviour is attempted
(use the same values for all elements). If groups is provided but not palette, palette is set to
default "lightgray".
palette : list[list[str | None]] | list[str | None] | str | None
Palette for discrete annotations. List of valid color names that should be
used for the categories. Must match the number of groups. Similarly to groups, in the case of a list of
lists means that there is one list per element to be plotted in the list and this list can contain multiple
palettes (one per group) to be visualized. If not provided as list of lists, broadcasting behaviour is
attempted (use the same values for all elements).
na_color : str | list[float] | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color
("red"), a hex representation ("#000000ff") or a list of floats that
represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values won't
be shown.
groups : list[str] | str | None
When using `color` and the key represents discrete labels, `groups` can be used to show only a subset of
them. Other values are set to NA. If elment is None, broadcasting behaviour is attempted (use the same
values for all elements).
palette : list[str] | str | None
Palette for discrete annotations. List of valid color names that should be used for the categories. Must
match the number of groups. If element is None, broadcasting behaviour is attempted (use the same values for
all elements). If groups is provided but not palette, palette is set to default "lightgray".
na_color : ColorLike | None, default "lightgrey"
Color to be used for NAs values, if present. Can either be a named color ("red"), a hex representation
("#000000ff") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). When None, the values
won't be shown.
cmap : Colormap | str | None, optional
Colormap for discrete or continuous annotations using 'color', see
:class:`matplotlib.colors.Colormap`. If no palette is given and `color`
refers to a categorical, the colors are sampled from this colormap.
Colormap for discrete or continuous annotations using 'color', see :class:`matplotlib.colors.Colormap`. If
no palette is given and `color` refers to a categorical, the colors are sampled from this colormap.
norm : bool | Normalize, default False
Colormap normalization for continuous annotations.
size : float | int, default 1.0
Size of the points
table_name:
Name of the table(s) containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If multiple names are given in a list than the
length must be equal to the number of spatial elements being plotted.
table_name: str | None
Name of the table containing the color(s) columns. If one name is given than the table is used for each
spatial element to be plotted if the table annotates it. If you want to use different tables for particular
elements, as specified under element.
kwargs
Additional arguments to be passed to cmap and norm.

Expand All@@ -353,10 +345,9 @@ def render_points(
sd.SpatialData
The modified SpatialData object with the rendered shapes.
"""
params_dict = _validate_render_params(
"points",
params_dict = _validate_points_render_params(
self._sdata,
elements=elements,
element=element,
alpha=alpha,
color=color,
groups=groups,
Expand All@@ -365,6 +356,7 @@ def render_points(
cmap=cmap,
norm=norm,
size=size,
table_name=table_name,
)

sdata = self._copy()
Expand All@@ -378,18 +370,20 @@ def render_points(
**kwargs,
)

sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
elements=params_dict["elements"],
color=params_dict["color"],
col_for_color=params_dict["col_for_color"],
groups=params_dict["groups"],
cmap_params=cmap_params,
palette=params_dict["palette"],
alpha=alpha,
transfunc=kwargs.get("transfunc", None),
size=size,
element_table_mapping=table_name,
)
for element, param_values in params_dict.items():
sdata.plotting_tree[f"{n_steps+1}_render_points"] = PointsRenderParams(
element=element,
color=param_values["color"],
col_for_color=param_values["col_for_color"],
groups=param_values["groups"],
cmap_params=cmap_params,
palette=param_values["palette"],
alpha=param_values["alpha"],
transfunc=kwargs.get("transfunc", None),
size=param_values["size"],
table_name=param_values["table_name"],
)
n_steps += 1

return sdata

Expand DownExpand Up@@ -885,7 +879,6 @@ def show(
)

if wanted_points_on_this_cs:
params_copy = _update_params(sdata, params_copy, wanted_points_on_this_cs, "points")
_render_points(
sdata=sdata,
render_params=params_copy,
Expand Down
Loading