Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
50808b3
speed up datashader by using canvas size equal to image size
Jul 17, 2024
759ecd8
_cax definition bugfix
Jul 17, 2024
ea718bf
attempt mypy error fixes
Jul 17, 2024
eef7b8b
delete comments
Jul 17, 2024
702a226
continuous agg with mean instead of sum and use linear cmap instead o…
Jul 19, 2024
420772a
Merge branch 'main' into feature/296-datashader-canvas-size
LucaMarconato Jul 22, 2024
48c1c52
switch back to sum() and move duplicate datashader code into private …
Jul 23, 2024
fc89462
make ds reduction a kwarg and fix ds colorbar limits for continuous c…
Jul 30, 2024
a0dac08
adapt ds px using dpi/100
Jul 31, 2024
c8b0b34
spread how kw refactoring
Aug 6, 2024
e1662e8
add tests and minor adaptations
Sep 10, 2024
d3a4c14
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Sep 10, 2024
f0074c9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 10, 2024
6dfaf51
fix merge conflict resolution
Sep 10, 2024
3d890a6
update test images
Sep 10, 2024
a2b66e1
update changelog
Sep 10, 2024
8b0b24d
minor refactor
timtreis Sep 14, 2024
982c627
added tests for remaining methods
timtreis Sep 14, 2024
0d124d7
added images from runner
timtreis Sep 14, 2024
ceb4fd2
remove m2 reduction, fix datashader coloring shapes by given color
Sep 18, 2024
59a19da
add ds shapes outlines, fix shapes fill_alpha behavior, fix std/var/a…
Oct 1, 2024
22cdabc
add test images
Oct 1, 2024
1d07544
update test images
Oct 1, 2024
febd424
changelog update and documentation
Oct 2, 2024
2a95236
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Oct 11, 2024
1d871ed
fix resolved merge conflict
Oct 11, 2024
0bf8c35
fix resolved merge conflict
Oct 11, 2024
4391b81
Wouter's feedback
Oct 14, 2024
a06400b
fix coordinate system
Oct 14, 2024
4b52fe7
passing Normalize with datashader has an effect now
Oct 16, 2024
cd0f68b
fix norm behavior
Oct 16, 2024
214cb9d
Tim's feedback
Oct 16, 2024
ddc7927
fix test
Oct 16, 2024
73568ec
add test image
Oct 16, 2024
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
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,18 +8,22 @@ and this project adheres to [Semantic Versioning][].
[keep a changelog]: https://keepachangelog.com/en/1.0.0/
[semantic versioning]: https://semver.org/spec/v2.0.0.html

## [0.2.7] - 2024-09-04
## [0.2.7] - tbd

### Added

-
- The user can now specify `datashader_reduction` to control the rendering behaviour (#309)
- Rendering outlines of shapes with datashader works now (#309)

### Changed

-

### Fixed

- datashader now uses canvas size = image size which speeds up the rendering (#309)
- datashader now uses the `linear` as interpolation method for colormaps instead of the default `eq_hist` to make it equivalent to matplotlib (#309)
- point sizes of datashader now agree with matplotlib also when dpi != 100 (#309)
- Giving a custom colormap when rendering a multiscale image now works (#586)

## [0.2.6] - 2024-09-04
Expand Down
26 changes: 21 additions & 5 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -227,8 +227,15 @@ def render_shapes(
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 : Any
Additional arguments to be passed to cmap and norm.
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.


Notes
-----
Expand DownExpand Up@@ -264,13 +271,13 @@ def render_shapes(
scale=scale,
table_name=table_name,
method=method,
ds_reduction=kwargs.get("datashader_reduction", None),
)

sdata = self._copy()
sdata = _verify_plotting_tree(sdata)
n_steps = len(sdata.plotting_tree.keys())
outline_params = _set_outline(outline_alpha > 0, outline_width, outline_color)

for element, param_values in params_dict.items():
cmap_params = _prepare_cmap_norm(
cmap=cmap,
Expand All@@ -291,7 +298,8 @@ def render_shapes(
transfunc=kwargs.get("transfunc", None),
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
method=param_values["method"],
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

Expand DownExpand Up@@ -361,8 +369,14 @@ def render_points(
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.

**kwargs : Any
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.

Returns
-------
Expand All@@ -388,6 +402,7 @@ def render_points(
norm=norm,
size=size,
table_name=table_name,
ds_reduction=kwargs.get("datashader_reduction", None),
)

if method is not None:
Expand DownExpand Up@@ -419,6 +434,7 @@ def render_points(
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

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
Show all changes
34 commits
Select commit Hold shift + click to select a range
50808b3
speed up datashader by using canvas size equal to image size
Jul 17, 2024
759ecd8
_cax definition bugfix
Jul 17, 2024
ea718bf
attempt mypy error fixes
Jul 17, 2024
eef7b8b
delete comments
Jul 17, 2024
702a226
continuous agg with mean instead of sum and use linear cmap instead o…
Jul 19, 2024
420772a
Merge branch 'main' into feature/296-datashader-canvas-size
LucaMarconato Jul 22, 2024
48c1c52
switch back to sum() and move duplicate datashader code into private …
Jul 23, 2024
fc89462
make ds reduction a kwarg and fix ds colorbar limits for continuous c…
Jul 30, 2024
a0dac08
adapt ds px using dpi/100
Jul 31, 2024
c8b0b34
spread how kw refactoring
Aug 6, 2024
e1662e8
add tests and minor adaptations
Sep 10, 2024
d3a4c14
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Sep 10, 2024
f0074c9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 10, 2024
6dfaf51
fix merge conflict resolution
Sep 10, 2024
3d890a6
update test images
Sep 10, 2024
a2b66e1
update changelog
Sep 10, 2024
8b0b24d
minor refactor
timtreis Sep 14, 2024
982c627
added tests for remaining methods
timtreis Sep 14, 2024
0d124d7
added images from runner
timtreis Sep 14, 2024
ceb4fd2
remove m2 reduction, fix datashader coloring shapes by given color
Sep 18, 2024
59a19da
add ds shapes outlines, fix shapes fill_alpha behavior, fix std/var/a…
Oct 1, 2024
22cdabc
add test images
Oct 1, 2024
1d07544
update test images
Oct 1, 2024
febd424
changelog update and documentation
Oct 2, 2024
2a95236
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Oct 11, 2024
1d871ed
fix resolved merge conflict
Oct 11, 2024
0bf8c35
fix resolved merge conflict
Oct 11, 2024
4391b81
Wouter's feedback
Oct 14, 2024
a06400b
fix coordinate system
Oct 14, 2024
4b52fe7
passing Normalize with datashader has an effect now
Oct 16, 2024
cd0f68b
fix norm behavior
Oct 16, 2024
214cb9d
Tim's feedback
Oct 16, 2024
ddc7927
fix test
Oct 16, 2024
73568ec
add test image
Oct 16, 2024
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
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,18 +8,22 @@ and this project adheres to [Semantic Versioning][].
[keep a changelog]: https://keepachangelog.com/en/1.0.0/
[semantic versioning]: https://semver.org/spec/v2.0.0.html

## [0.2.7] - 2024-09-04
## [0.2.7] - tbd

### Added

-
- The user can now specify `datashader_reduction` to control the rendering behaviour (#309)
- Rendering outlines of shapes with datashader works now (#309)

### Changed

-

### Fixed

- datashader now uses canvas size = image size which speeds up the rendering (#309)
- datashader now uses the `linear` as interpolation method for colormaps instead of the default `eq_hist` to make it equivalent to matplotlib (#309)
- point sizes of datashader now agree with matplotlib also when dpi != 100 (#309)
- Giving a custom colormap when rendering a multiscale image now works (#586)

## [0.2.6] - 2024-09-04
Expand Down
26 changes: 21 additions & 5 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -227,8 +227,15 @@ def render_shapes(
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 : Any
Additional arguments to be passed to cmap and norm.
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.


Notes
-----
Expand DownExpand Up@@ -264,13 +271,13 @@ def render_shapes(
scale=scale,
table_name=table_name,
method=method,
ds_reduction=kwargs.get("datashader_reduction", None),
)

sdata = self._copy()
sdata = _verify_plotting_tree(sdata)
n_steps = len(sdata.plotting_tree.keys())
outline_params = _set_outline(outline_alpha > 0, outline_width, outline_color)

for element, param_values in params_dict.items():
cmap_params = _prepare_cmap_norm(
cmap=cmap,
Expand All@@ -291,7 +298,8 @@ def render_shapes(
transfunc=kwargs.get("transfunc", None),
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
method=param_values["method"],
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

Expand DownExpand Up@@ -361,8 +369,14 @@ def render_points(
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.

**kwargs : Any
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.

Returns
-------
Expand All@@ -388,6 +402,7 @@ def render_points(
norm=norm,
size=size,
table_name=table_name,
ds_reduction=kwargs.get("datashader_reduction", None),
)

if method is not None:
Expand DownExpand Up@@ -419,6 +434,7 @@ def render_points(
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

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
Show all changes
34 commits
Select commit Hold shift + click to select a range
50808b3
speed up datashader by using canvas size equal to image size
Jul 17, 2024
759ecd8
_cax definition bugfix
Jul 17, 2024
ea718bf
attempt mypy error fixes
Jul 17, 2024
eef7b8b
delete comments
Jul 17, 2024
702a226
continuous agg with mean instead of sum and use linear cmap instead o…
Jul 19, 2024
420772a
Merge branch 'main' into feature/296-datashader-canvas-size
LucaMarconato Jul 22, 2024
48c1c52
switch back to sum() and move duplicate datashader code into private …
Jul 23, 2024
fc89462
make ds reduction a kwarg and fix ds colorbar limits for continuous c…
Jul 30, 2024
a0dac08
adapt ds px using dpi/100
Jul 31, 2024
c8b0b34
spread how kw refactoring
Aug 6, 2024
e1662e8
add tests and minor adaptations
Sep 10, 2024
d3a4c14
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Sep 10, 2024
f0074c9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 10, 2024
6dfaf51
fix merge conflict resolution
Sep 10, 2024
3d890a6
update test images
Sep 10, 2024
a2b66e1
update changelog
Sep 10, 2024
8b0b24d
minor refactor
timtreis Sep 14, 2024
982c627
added tests for remaining methods
timtreis Sep 14, 2024
0d124d7
added images from runner
timtreis Sep 14, 2024
ceb4fd2
remove m2 reduction, fix datashader coloring shapes by given color
Sep 18, 2024
59a19da
add ds shapes outlines, fix shapes fill_alpha behavior, fix std/var/a…
Oct 1, 2024
22cdabc
add test images
Oct 1, 2024
1d07544
update test images
Oct 1, 2024
febd424
changelog update and documentation
Oct 2, 2024
2a95236
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Oct 11, 2024
1d871ed
fix resolved merge conflict
Oct 11, 2024
0bf8c35
fix resolved merge conflict
Oct 11, 2024
4391b81
Wouter's feedback
Oct 14, 2024
a06400b
fix coordinate system
Oct 14, 2024
4b52fe7
passing Normalize with datashader has an effect now
Oct 16, 2024
cd0f68b
fix norm behavior
Oct 16, 2024
214cb9d
Tim's feedback
Oct 16, 2024
ddc7927
fix test
Oct 16, 2024
73568ec
add test image
Oct 16, 2024
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
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,18 +8,22 @@ and this project adheres to [Semantic Versioning][].
[keep a changelog]: https://keepachangelog.com/en/1.0.0/
[semantic versioning]: https://semver.org/spec/v2.0.0.html

## [0.2.7] - 2024-09-04
## [0.2.7] - tbd

### Added

-
- The user can now specify `datashader_reduction` to control the rendering behaviour (#309)
- Rendering outlines of shapes with datashader works now (#309)

### Changed

-

### Fixed

- datashader now uses canvas size = image size which speeds up the rendering (#309)
- datashader now uses the `linear` as interpolation method for colormaps instead of the default `eq_hist` to make it equivalent to matplotlib (#309)
- point sizes of datashader now agree with matplotlib also when dpi != 100 (#309)
- Giving a custom colormap when rendering a multiscale image now works (#586)

## [0.2.6] - 2024-09-04
Expand Down
26 changes: 21 additions & 5 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -227,8 +227,15 @@ def render_shapes(
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 : Any
Additional arguments to be passed to cmap and norm.
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.


Notes
-----
Expand DownExpand Up@@ -264,13 +271,13 @@ def render_shapes(
scale=scale,
table_name=table_name,
method=method,
ds_reduction=kwargs.get("datashader_reduction", None),
)

sdata = self._copy()
sdata = _verify_plotting_tree(sdata)
n_steps = len(sdata.plotting_tree.keys())
outline_params = _set_outline(outline_alpha > 0, outline_width, outline_color)

for element, param_values in params_dict.items():
cmap_params = _prepare_cmap_norm(
cmap=cmap,
Expand All@@ -291,7 +298,8 @@ def render_shapes(
transfunc=kwargs.get("transfunc", None),
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
method=param_values["method"],
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

Expand DownExpand Up@@ -361,8 +369,14 @@ def render_points(
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.

**kwargs : Any
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.

Returns
-------
Expand All@@ -388,6 +402,7 @@ def render_points(
norm=norm,
size=size,
table_name=table_name,
ds_reduction=kwargs.get("datashader_reduction", None),
)

if method is not None:
Expand DownExpand Up@@ -419,6 +434,7 @@ def render_points(
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

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
Show all changes
34 commits
Select commit Hold shift + click to select a range
50808b3
speed up datashader by using canvas size equal to image size
Jul 17, 2024
759ecd8
_cax definition bugfix
Jul 17, 2024
ea718bf
attempt mypy error fixes
Jul 17, 2024
eef7b8b
delete comments
Jul 17, 2024
702a226
continuous agg with mean instead of sum and use linear cmap instead o…
Jul 19, 2024
420772a
Merge branch 'main' into feature/296-datashader-canvas-size
LucaMarconato Jul 22, 2024
48c1c52
switch back to sum() and move duplicate datashader code into private …
Jul 23, 2024
fc89462
make ds reduction a kwarg and fix ds colorbar limits for continuous c…
Jul 30, 2024
a0dac08
adapt ds px using dpi/100
Jul 31, 2024
c8b0b34
spread how kw refactoring
Aug 6, 2024
e1662e8
add tests and minor adaptations
Sep 10, 2024
d3a4c14
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Sep 10, 2024
f0074c9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 10, 2024
6dfaf51
fix merge conflict resolution
Sep 10, 2024
3d890a6
update test images
Sep 10, 2024
a2b66e1
update changelog
Sep 10, 2024
8b0b24d
minor refactor
timtreis Sep 14, 2024
982c627
added tests for remaining methods
timtreis Sep 14, 2024
0d124d7
added images from runner
timtreis Sep 14, 2024
ceb4fd2
remove m2 reduction, fix datashader coloring shapes by given color
Sep 18, 2024
59a19da
add ds shapes outlines, fix shapes fill_alpha behavior, fix std/var/a…
Oct 1, 2024
22cdabc
add test images
Oct 1, 2024
1d07544
update test images
Oct 1, 2024
febd424
changelog update and documentation
Oct 2, 2024
2a95236
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Oct 11, 2024
1d871ed
fix resolved merge conflict
Oct 11, 2024
0bf8c35
fix resolved merge conflict
Oct 11, 2024
4391b81
Wouter's feedback
Oct 14, 2024
a06400b
fix coordinate system
Oct 14, 2024
4b52fe7
passing Normalize with datashader has an effect now
Oct 16, 2024
cd0f68b
fix norm behavior
Oct 16, 2024
214cb9d
Tim's feedback
Oct 16, 2024
ddc7927
fix test
Oct 16, 2024
73568ec
add test image
Oct 16, 2024
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
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,18 +8,22 @@ and this project adheres to [Semantic Versioning][].
[keep a changelog]: https://keepachangelog.com/en/1.0.0/
[semantic versioning]: https://semver.org/spec/v2.0.0.html

## [0.2.7] - 2024-09-04
## [0.2.7] - tbd

### Added

-
- The user can now specify `datashader_reduction` to control the rendering behaviour (#309)
- Rendering outlines of shapes with datashader works now (#309)

### Changed

-

### Fixed

- datashader now uses canvas size = image size which speeds up the rendering (#309)
- datashader now uses the `linear` as interpolation method for colormaps instead of the default `eq_hist` to make it equivalent to matplotlib (#309)
- point sizes of datashader now agree with matplotlib also when dpi != 100 (#309)
- Giving a custom colormap when rendering a multiscale image now works (#586)

## [0.2.6] - 2024-09-04
Expand Down
26 changes: 21 additions & 5 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -227,8 +227,15 @@ def render_shapes(
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 : Any
Additional arguments to be passed to cmap and norm.
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.


Notes
-----
Expand DownExpand Up@@ -264,13 +271,13 @@ def render_shapes(
scale=scale,
table_name=table_name,
method=method,
ds_reduction=kwargs.get("datashader_reduction", None),
)

sdata = self._copy()
sdata = _verify_plotting_tree(sdata)
n_steps = len(sdata.plotting_tree.keys())
outline_params = _set_outline(outline_alpha > 0, outline_width, outline_color)

for element, param_values in params_dict.items():
cmap_params = _prepare_cmap_norm(
cmap=cmap,
Expand All@@ -291,7 +298,8 @@ def render_shapes(
transfunc=kwargs.get("transfunc", None),
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
method=param_values["method"],
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

Expand DownExpand Up@@ -361,8 +369,14 @@ def render_points(
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.

**kwargs : Any
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.

Returns
-------
Expand All@@ -388,6 +402,7 @@ def render_points(
norm=norm,
size=size,
table_name=table_name,
ds_reduction=kwargs.get("datashader_reduction", None),
)

if method is not None:
Expand DownExpand Up@@ -419,6 +434,7 @@ def render_points(
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

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
Show all changes
34 commits
Select commit Hold shift + click to select a range
50808b3
speed up datashader by using canvas size equal to image size
Jul 17, 2024
759ecd8
_cax definition bugfix
Jul 17, 2024
ea718bf
attempt mypy error fixes
Jul 17, 2024
eef7b8b
delete comments
Jul 17, 2024
702a226
continuous agg with mean instead of sum and use linear cmap instead o…
Jul 19, 2024
420772a
Merge branch 'main' into feature/296-datashader-canvas-size
LucaMarconato Jul 22, 2024
48c1c52
switch back to sum() and move duplicate datashader code into private …
Jul 23, 2024
fc89462
make ds reduction a kwarg and fix ds colorbar limits for continuous c…
Jul 30, 2024
a0dac08
adapt ds px using dpi/100
Jul 31, 2024
c8b0b34
spread how kw refactoring
Aug 6, 2024
e1662e8
add tests and minor adaptations
Sep 10, 2024
d3a4c14
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Sep 10, 2024
f0074c9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 10, 2024
6dfaf51
fix merge conflict resolution
Sep 10, 2024
3d890a6
update test images
Sep 10, 2024
a2b66e1
update changelog
Sep 10, 2024
8b0b24d
minor refactor
timtreis Sep 14, 2024
982c627
added tests for remaining methods
timtreis Sep 14, 2024
0d124d7
added images from runner
timtreis Sep 14, 2024
ceb4fd2
remove m2 reduction, fix datashader coloring shapes by given color
Sep 18, 2024
59a19da
add ds shapes outlines, fix shapes fill_alpha behavior, fix std/var/a…
Oct 1, 2024
22cdabc
add test images
Oct 1, 2024
1d07544
update test images
Oct 1, 2024
febd424
changelog update and documentation
Oct 2, 2024
2a95236
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Oct 11, 2024
1d871ed
fix resolved merge conflict
Oct 11, 2024
0bf8c35
fix resolved merge conflict
Oct 11, 2024
4391b81
Wouter's feedback
Oct 14, 2024
a06400b
fix coordinate system
Oct 14, 2024
4b52fe7
passing Normalize with datashader has an effect now
Oct 16, 2024
cd0f68b
fix norm behavior
Oct 16, 2024
214cb9d
Tim's feedback
Oct 16, 2024
ddc7927
fix test
Oct 16, 2024
73568ec
add test image
Oct 16, 2024
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
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,18 +8,22 @@ and this project adheres to [Semantic Versioning][].
[keep a changelog]: https://keepachangelog.com/en/1.0.0/
[semantic versioning]: https://semver.org/spec/v2.0.0.html

## [0.2.7] - 2024-09-04
## [0.2.7] - tbd

### Added

-
- The user can now specify `datashader_reduction` to control the rendering behaviour (#309)
- Rendering outlines of shapes with datashader works now (#309)

### Changed

-

### Fixed

- datashader now uses canvas size = image size which speeds up the rendering (#309)
- datashader now uses the `linear` as interpolation method for colormaps instead of the default `eq_hist` to make it equivalent to matplotlib (#309)
- point sizes of datashader now agree with matplotlib also when dpi != 100 (#309)
- Giving a custom colormap when rendering a multiscale image now works (#586)

## [0.2.6] - 2024-09-04
Expand Down
26 changes: 21 additions & 5 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -227,8 +227,15 @@ def render_shapes(
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 : Any
Additional arguments to be passed to cmap and norm.
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.


Notes
-----
Expand DownExpand Up@@ -264,13 +271,13 @@ def render_shapes(
scale=scale,
table_name=table_name,
method=method,
ds_reduction=kwargs.get("datashader_reduction", None),
)

sdata = self._copy()
sdata = _verify_plotting_tree(sdata)
n_steps = len(sdata.plotting_tree.keys())
outline_params = _set_outline(outline_alpha > 0, outline_width, outline_color)

for element, param_values in params_dict.items():
cmap_params = _prepare_cmap_norm(
cmap=cmap,
Expand All@@ -291,7 +298,8 @@ def render_shapes(
transfunc=kwargs.get("transfunc", None),
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
method=param_values["method"],
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

Expand DownExpand Up@@ -361,8 +369,14 @@ def render_points(
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.

**kwargs : Any
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.

Returns
-------
Expand All@@ -388,6 +402,7 @@ def render_points(
norm=norm,
size=size,
table_name=table_name,
ds_reduction=kwargs.get("datashader_reduction", None),
)

if method is not None:
Expand DownExpand Up@@ -419,6 +434,7 @@ def render_points(
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

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
Show all changes
34 commits
Select commit Hold shift + click to select a range
50808b3
speed up datashader by using canvas size equal to image size
Jul 17, 2024
759ecd8
_cax definition bugfix
Jul 17, 2024
ea718bf
attempt mypy error fixes
Jul 17, 2024
eef7b8b
delete comments
Jul 17, 2024
702a226
continuous agg with mean instead of sum and use linear cmap instead o…
Jul 19, 2024
420772a
Merge branch 'main' into feature/296-datashader-canvas-size
LucaMarconato Jul 22, 2024
48c1c52
switch back to sum() and move duplicate datashader code into private …
Jul 23, 2024
fc89462
make ds reduction a kwarg and fix ds colorbar limits for continuous c…
Jul 30, 2024
a0dac08
adapt ds px using dpi/100
Jul 31, 2024
c8b0b34
spread how kw refactoring
Aug 6, 2024
e1662e8
add tests and minor adaptations
Sep 10, 2024
d3a4c14
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Sep 10, 2024
f0074c9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 10, 2024
6dfaf51
fix merge conflict resolution
Sep 10, 2024
3d890a6
update test images
Sep 10, 2024
a2b66e1
update changelog
Sep 10, 2024
8b0b24d
minor refactor
timtreis Sep 14, 2024
982c627
added tests for remaining methods
timtreis Sep 14, 2024
0d124d7
added images from runner
timtreis Sep 14, 2024
ceb4fd2
remove m2 reduction, fix datashader coloring shapes by given color
Sep 18, 2024
59a19da
add ds shapes outlines, fix shapes fill_alpha behavior, fix std/var/a…
Oct 1, 2024
22cdabc
add test images
Oct 1, 2024
1d07544
update test images
Oct 1, 2024
febd424
changelog update and documentation
Oct 2, 2024
2a95236
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Oct 11, 2024
1d871ed
fix resolved merge conflict
Oct 11, 2024
0bf8c35
fix resolved merge conflict
Oct 11, 2024
4391b81
Wouter's feedback
Oct 14, 2024
a06400b
fix coordinate system
Oct 14, 2024
4b52fe7
passing Normalize with datashader has an effect now
Oct 16, 2024
cd0f68b
fix norm behavior
Oct 16, 2024
214cb9d
Tim's feedback
Oct 16, 2024
ddc7927
fix test
Oct 16, 2024
73568ec
add test image
Oct 16, 2024
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
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,18 +8,22 @@ and this project adheres to [Semantic Versioning][].
[keep a changelog]: https://keepachangelog.com/en/1.0.0/
[semantic versioning]: https://semver.org/spec/v2.0.0.html

## [0.2.7] - 2024-09-04
## [0.2.7] - tbd

### Added

-
- The user can now specify `datashader_reduction` to control the rendering behaviour (#309)
- Rendering outlines of shapes with datashader works now (#309)

### Changed

-

### Fixed

- datashader now uses canvas size = image size which speeds up the rendering (#309)
- datashader now uses the `linear` as interpolation method for colormaps instead of the default `eq_hist` to make it equivalent to matplotlib (#309)
- point sizes of datashader now agree with matplotlib also when dpi != 100 (#309)
- Giving a custom colormap when rendering a multiscale image now works (#586)

## [0.2.6] - 2024-09-04
Expand Down
26 changes: 21 additions & 5 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -227,8 +227,15 @@ def render_shapes(
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 : Any
Additional arguments to be passed to cmap and norm.
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.


Notes
-----
Expand DownExpand Up@@ -264,13 +271,13 @@ def render_shapes(
scale=scale,
table_name=table_name,
method=method,
ds_reduction=kwargs.get("datashader_reduction", None),
)

sdata = self._copy()
sdata = _verify_plotting_tree(sdata)
n_steps = len(sdata.plotting_tree.keys())
outline_params = _set_outline(outline_alpha > 0, outline_width, outline_color)

for element, param_values in params_dict.items():
cmap_params = _prepare_cmap_norm(
cmap=cmap,
Expand All@@ -291,7 +298,8 @@ def render_shapes(
transfunc=kwargs.get("transfunc", None),
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
method=param_values["method"],
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

Expand DownExpand Up@@ -361,8 +369,14 @@ def render_points(
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.

**kwargs : Any
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.

Returns
-------
Expand All@@ -388,6 +402,7 @@ def render_points(
norm=norm,
size=size,
table_name=table_name,
ds_reduction=kwargs.get("datashader_reduction", None),
)

if method is not None:
Expand DownExpand Up@@ -419,6 +434,7 @@ def render_points(
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

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
Show all changes
34 commits
Select commit Hold shift + click to select a range
50808b3
speed up datashader by using canvas size equal to image size
Jul 17, 2024
759ecd8
_cax definition bugfix
Jul 17, 2024
ea718bf
attempt mypy error fixes
Jul 17, 2024
eef7b8b
delete comments
Jul 17, 2024
702a226
continuous agg with mean instead of sum and use linear cmap instead o…
Jul 19, 2024
420772a
Merge branch 'main' into feature/296-datashader-canvas-size
LucaMarconato Jul 22, 2024
48c1c52
switch back to sum() and move duplicate datashader code into private …
Jul 23, 2024
fc89462
make ds reduction a kwarg and fix ds colorbar limits for continuous c…
Jul 30, 2024
a0dac08
adapt ds px using dpi/100
Jul 31, 2024
c8b0b34
spread how kw refactoring
Aug 6, 2024
e1662e8
add tests and minor adaptations
Sep 10, 2024
d3a4c14
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Sep 10, 2024
f0074c9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 10, 2024
6dfaf51
fix merge conflict resolution
Sep 10, 2024
3d890a6
update test images
Sep 10, 2024
a2b66e1
update changelog
Sep 10, 2024
8b0b24d
minor refactor
timtreis Sep 14, 2024
982c627
added tests for remaining methods
timtreis Sep 14, 2024
0d124d7
added images from runner
timtreis Sep 14, 2024
ceb4fd2
remove m2 reduction, fix datashader coloring shapes by given color
Sep 18, 2024
59a19da
add ds shapes outlines, fix shapes fill_alpha behavior, fix std/var/a…
Oct 1, 2024
22cdabc
add test images
Oct 1, 2024
1d07544
update test images
Oct 1, 2024
febd424
changelog update and documentation
Oct 2, 2024
2a95236
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Oct 11, 2024
1d871ed
fix resolved merge conflict
Oct 11, 2024
0bf8c35
fix resolved merge conflict
Oct 11, 2024
4391b81
Wouter's feedback
Oct 14, 2024
a06400b
fix coordinate system
Oct 14, 2024
4b52fe7
passing Normalize with datashader has an effect now
Oct 16, 2024
cd0f68b
fix norm behavior
Oct 16, 2024
214cb9d
Tim's feedback
Oct 16, 2024
ddc7927
fix test
Oct 16, 2024
73568ec
add test image
Oct 16, 2024
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
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,18 +8,22 @@ and this project adheres to [Semantic Versioning][].
[keep a changelog]: https://keepachangelog.com/en/1.0.0/
[semantic versioning]: https://semver.org/spec/v2.0.0.html

## [0.2.7] - 2024-09-04
## [0.2.7] - tbd

### Added

-
- The user can now specify `datashader_reduction` to control the rendering behaviour (#309)
- Rendering outlines of shapes with datashader works now (#309)

### Changed

-

### Fixed

- datashader now uses canvas size = image size which speeds up the rendering (#309)
- datashader now uses the `linear` as interpolation method for colormaps instead of the default `eq_hist` to make it equivalent to matplotlib (#309)
- point sizes of datashader now agree with matplotlib also when dpi != 100 (#309)
- Giving a custom colormap when rendering a multiscale image now works (#586)

## [0.2.6] - 2024-09-04
Expand Down
26 changes: 21 additions & 5 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -227,8 +227,15 @@ def render_shapes(
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 : Any
Additional arguments to be passed to cmap and norm.
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.


Notes
-----
Expand DownExpand Up@@ -264,13 +271,13 @@ def render_shapes(
scale=scale,
table_name=table_name,
method=method,
ds_reduction=kwargs.get("datashader_reduction", None),
)

sdata = self._copy()
sdata = _verify_plotting_tree(sdata)
n_steps = len(sdata.plotting_tree.keys())
outline_params = _set_outline(outline_alpha > 0, outline_width, outline_color)

for element, param_values in params_dict.items():
cmap_params = _prepare_cmap_norm(
cmap=cmap,
Expand All@@ -291,7 +298,8 @@ def render_shapes(
transfunc=kwargs.get("transfunc", None),
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
method=param_values["method"],
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

Expand DownExpand Up@@ -361,8 +369,14 @@ def render_points(
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.

**kwargs : Any
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.

Returns
-------
Expand All@@ -388,6 +402,7 @@ def render_points(
norm=norm,
size=size,
table_name=table_name,
ds_reduction=kwargs.get("datashader_reduction", None),
)

if method is not None:
Expand DownExpand Up@@ -419,6 +434,7 @@ def render_points(
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

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
Show all changes
34 commits
Select commit Hold shift + click to select a range
50808b3
speed up datashader by using canvas size equal to image size
Jul 17, 2024
759ecd8
_cax definition bugfix
Jul 17, 2024
ea718bf
attempt mypy error fixes
Jul 17, 2024
eef7b8b
delete comments
Jul 17, 2024
702a226
continuous agg with mean instead of sum and use linear cmap instead o…
Jul 19, 2024
420772a
Merge branch 'main' into feature/296-datashader-canvas-size
LucaMarconato Jul 22, 2024
48c1c52
switch back to sum() and move duplicate datashader code into private …
Jul 23, 2024
fc89462
make ds reduction a kwarg and fix ds colorbar limits for continuous c…
Jul 30, 2024
a0dac08
adapt ds px using dpi/100
Jul 31, 2024
c8b0b34
spread how kw refactoring
Aug 6, 2024
e1662e8
add tests and minor adaptations
Sep 10, 2024
d3a4c14
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Sep 10, 2024
f0074c9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 10, 2024
6dfaf51
fix merge conflict resolution
Sep 10, 2024
3d890a6
update test images
Sep 10, 2024
a2b66e1
update changelog
Sep 10, 2024
8b0b24d
minor refactor
timtreis Sep 14, 2024
982c627
added tests for remaining methods
timtreis Sep 14, 2024
0d124d7
added images from runner
timtreis Sep 14, 2024
ceb4fd2
remove m2 reduction, fix datashader coloring shapes by given color
Sep 18, 2024
59a19da
add ds shapes outlines, fix shapes fill_alpha behavior, fix std/var/a…
Oct 1, 2024
22cdabc
add test images
Oct 1, 2024
1d07544
update test images
Oct 1, 2024
febd424
changelog update and documentation
Oct 2, 2024
2a95236
Merge branch 'main' into feature/296-datashader-canvas-size
Sonja-Stockhaus Oct 11, 2024
1d871ed
fix resolved merge conflict
Oct 11, 2024
0bf8c35
fix resolved merge conflict
Oct 11, 2024
4391b81
Wouter's feedback
Oct 14, 2024
a06400b
fix coordinate system
Oct 14, 2024
4b52fe7
passing Normalize with datashader has an effect now
Oct 16, 2024
cd0f68b
fix norm behavior
Oct 16, 2024
214cb9d
Tim's feedback
Oct 16, 2024
ddc7927
fix test
Oct 16, 2024
73568ec
add test image
Oct 16, 2024
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
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,18 +8,22 @@ and this project adheres to [Semantic Versioning][].
[keep a changelog]: https://keepachangelog.com/en/1.0.0/
[semantic versioning]: https://semver.org/spec/v2.0.0.html

## [0.2.7] - 2024-09-04
## [0.2.7] - tbd

### Added

-
- The user can now specify `datashader_reduction` to control the rendering behaviour (#309)
- Rendering outlines of shapes with datashader works now (#309)

### Changed

-

### Fixed

- datashader now uses canvas size = image size which speeds up the rendering (#309)
- datashader now uses the `linear` as interpolation method for colormaps instead of the default `eq_hist` to make it equivalent to matplotlib (#309)
- point sizes of datashader now agree with matplotlib also when dpi != 100 (#309)
- Giving a custom colormap when rendering a multiscale image now works (#586)

## [0.2.6] - 2024-09-04
Expand Down
26 changes: 21 additions & 5 deletions src/spatialdata_plot/pl/basic.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -227,8 +227,15 @@ def render_shapes(
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 : Any
Additional arguments to be passed to cmap and norm.
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.


Notes
-----
Expand DownExpand Up@@ -264,13 +271,13 @@ def render_shapes(
scale=scale,
table_name=table_name,
method=method,
ds_reduction=kwargs.get("datashader_reduction", None),
)

sdata = self._copy()
sdata = _verify_plotting_tree(sdata)
n_steps = len(sdata.plotting_tree.keys())
outline_params = _set_outline(outline_alpha > 0, outline_width, outline_color)

for element, param_values in params_dict.items():
cmap_params = _prepare_cmap_norm(
cmap=cmap,
Expand All@@ -291,7 +298,8 @@ def render_shapes(
transfunc=kwargs.get("transfunc", None),
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
method=param_values["method"],
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

Expand DownExpand Up@@ -361,8 +369,14 @@ def render_points(
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.

**kwargs : Any
Additional arguments for customization. This can include:

datashader_reduction : Literal[
"sum", "mean", "any", "count", "std", "var", "max", "min"
], default: "sum"
Reduction method for datashader when coloring by continuous values. Defaults to 'sum'.

Returns
-------
Expand All@@ -388,6 +402,7 @@ def render_points(
norm=norm,
size=size,
table_name=table_name,
ds_reduction=kwargs.get("datashader_reduction", None),
)

if method is not None:
Expand DownExpand Up@@ -419,6 +434,7 @@ def render_points(
table_name=param_values["table_name"],
zorder=n_steps,
method=method,
ds_reduction=param_values["ds_reduction"],
)
n_steps += 1

Expand Down
Loading