Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added tests for plotting columns from points #395

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
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
122 changes: 61 additions & 61 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,166 +12,166 @@ and this project adheres to [Semantic Versioning][].

### Fixed

- Transformations of Points and Shapes are now applied before rendering with datashader (#378)
- Transformations of Points and Shapes are now applied before rendering with datashader (#378)

## [0.2.8] - 2024-11-26

### Changed

- Support for `xarray.DataTree` (which moved from `datatree.DataTree`) (#380)
- Support for `xarray.DataTree` (which moved from `datatree.DataTree`) (#380)

## [0.2.7] - 2024-10-24

### Added

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

### 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)
- 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

### Changed

- Lowered RMSE-threshold for plot-based tests from 45 to 15 (#344)
- When subsetting to `groups`, `NA` isn't automatically added to legend (#344)
- When rendering a single image channel, a colorbar is now shown (#346)
- Removed `percentiles_for_norm` parameter (#346)
- Changed `norm` to no longer accept bools, only `mpl.colors.Normalise` or `None` (#346)
- Lowered RMSE-threshold for plot-based tests from 45 to 15 (#344)
- When subsetting to `groups`, `NA` isn't automatically added to legend (#344)
- When rendering a single image channel, a colorbar is now shown (#346)
- Removed `percentiles_for_norm` parameter (#346)
- Changed `norm` to no longer accept bools, only `mpl.colors.Normalise` or `None` (#346)

### Fixed

- Filtering with `groups` now preserves original cmap (#344)
- Non-selected `groups` are now not shown in `na_color` (#344)
- Several issues associated with `norm` and `colorbar` (#346)
- Filtering with `groups` now preserves original cmap (#344)
- Non-selected `groups` are now not shown in `na_color` (#344)
- Several issues associated with `norm` and `colorbar` (#346)

## [0.2.5] - 2024-08-23

### Changed

- Replaced `outline` parameter in `render_labels` with alpha-based logic (#323)
- Lowered RMSE-threshold for plot-based tests from 60 to 45 (#323)
- Removed `preprocessing` (.pp) accessor (#329)
- Replaced `outline` parameter in `render_labels` with alpha-based logic (#323)
- Lowered RMSE-threshold for plot-based tests from 60 to 45 (#323)
- Removed `preprocessing` (.pp) accessor (#329)

### Fixed

- Minor fixes for several tests as a result of the threshold change (#323)
- Minor fixes for several tests as a result of the threshold change (#323)

## [0.2.4] - 2024-08-07

### Added

- Added utils function for 0-transparent cmaps (#302)
- Added utils function for 0-transparent cmaps (#302)

### Fixed

- Took RNG out of categorical label test (#306)
- Performance bug when plotting shapes (#298)
- scale parameter was ignored for single-scale images (#301)
- Changes to support for dask-expr (#283)
- Added error handling for non-existent elements (#305)
- Specifying vmin and vmax properly clips image data (#307)
- import bug `get_cmap()` (8fd969c)
- Took RNG out of categorical label test (#306)
- Performance bug when plotting shapes (#298)
- scale parameter was ignored for single-scale images (#301)
- Changes to support for dask-expr (#283)
- Added error handling for non-existent elements (#305)
- Specifying vmin and vmax properly clips image data (#307)
- import bug `get_cmap()` (8fd969c)

## [0.2.3] - 2024-07-03

### Added

- Datashader support for points and shapes (#244)
- Datashader support for points and shapes (#244)

### Changed

- All parameters are now provided for a single element (#272)
- All parameters are now provided for a single element (#272)

### Fixed

- Fix color assignment for NaN values (#257)
- Zorder of rendering now strictly follows the order of the render_x calls (#244)
- Fix color assignment for NaN values (#257)
- Zorder of rendering now strictly follows the order of the render_x calls (#244)

## [0.2.2] - 2024-05-02

### Fixed

- Fixed `fill_alpha` ignoring `alpha` channel from custom cmap (#236)
- Fix channel str support (#221)
- Fixed `fill_alpha` ignoring `alpha` channel from custom cmap (#236)
- Fix channel str support (#221)

## [0.2.1] - 2024-03-26

### Minor

- Adjusted GitHub worklows
- Adjusted GitHub worklows

## [0.2.0] - 2024-03-24

### Added

- Support for plotting multiple tables @melonora
- Support for plotting multiple tables @melonora

### Fixed

- Several bugfixes, especially for colors and palettes @melonora
- Several bugfixes, especially for colors and palettes @melonora

## [0.1.0] - 2024-01-17

### Added

- Multiscale image handling: user can specify a scale, else the best scale is selected automatically given the figure size and dpi (#164)
- Large images are automatically rasterized to speed up performance (#164)
- Added better error message for mismatch in cs and ax number (#185)
- Beter test coverage for correct plotting of elements after transformation (#198)
- Can now stack render commands (#190, #192)
- The `color` argument in render_shapes/points now accepts actual colors as well (#199)
- Input arguments are now evaulated for their types in basic.py (#199)
- Multiscale image handling: user can specify a scale, else the best scale is selected automatically given the figure size and dpi (#164)
- Large images are automatically rasterized to speed up performance (#164)
- Added better error message for mismatch in cs and ax number (#185)
- Beter test coverage for correct plotting of elements after transformation (#198)
- Can now stack render commands (#190, #192)
- The `color` argument in render_shapes/points now accepts actual colors as well (#199)
- Input arguments are now evaulated for their types in basic.py (#199)

### Fixed

- Now dropping index when plotting shapes after spatial query (#177)
- Points are now being correctly rotated (#198)
- User can now pass Colormap objects to the cmap argument in render_images. When only one cmap is given for 3 channels, it is now applied to each channel (#188, #194)
- Now dropping index when plotting shapes after spatial query (#177)
- Points are now being correctly rotated (#198)
- User can now pass Colormap objects to the cmap argument in render_images. When only one cmap is given for 3 channels, it is now applied to each channel (#188, #194)

## [0.0.6] - 2023-11-06

### Added

- Pushed `get_extent` functionality upstream to `spatialdata` (#162)
- Pushed `get_extent` functionality upstream to `spatialdata` (#162)

## [0.0.5] - 2023-10-02

### Added

- Can now scale shapes (#152)
- Can now plot columns from GeoDataFrame (#149)
- Can now scale shapes (#152)
- Can now plot columns from GeoDataFrame (#149)

### Fixed

- Multipolygons are now handled correctly (#93)
- Legend order is now deterministic (#143)
- Images no longer normalised by default (#150)
- Filtering of shapes and points using the `groups` argument is now possible, coloring by palette and cmap arguments works for shapes and points (#153)
- Colorbar no longer autoscales to [0, 1] (#155)
- Plotting shapes after a spatial query is now possible (#163)
- Multipolygons are now handled correctly (#93)
- Legend order is now deterministic (#143)
- Images no longer normalised by default (#150)
- Filtering of shapes and points using the `groups` argument is now possible, coloring by palette and cmap arguments works for shapes and points (#153)
- Colorbar no longer autoscales to [0, 1] (#155)
- Plotting shapes after a spatial query is now possible (#163)

## [0.0.4] - 2023-08-11

### Fixed

- Multi-scale images/labels are now correctly substituted and the action is logged (#131).
- Empty geometries among the shapes can be handeled (#133).
- `outline_width` parameter in render_shapes is now a float that actually determines the line width (#139).
- Multi-scale images/labels are now correctly substituted and the action is logged (#131).
- Empty geometries among the shapes can be handeled (#133).
- `outline_width` parameter in render_shapes is now a float that actually determines the line width (#139).

## [0.0.2] - 2023-06-25

### Fixed

- Multiple bugfixes of which I didn't keep track of.
- Multiple bugfixes of which I didn't keep track of.

## [0.0.1] - 2023-04-04

### Added

- Initial release of `spatialdata-plot` with support for `images`, `labels`, `points` and `shapes`.
- Initial release of `spatialdata-plot` with support for `images`, `labels`, `points` and `shapes`.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ SpatialData’s plotting capabilities allow to quickly visualise all contained m

For more information on the `spatialdata-plot` library, please refer to the [documentation](https://spatialdata.scverse.org/projects/plot/en/latest/index.html). In particular, the

- [API documentation][link-api].
- [Example notebooks][link-notebooks] (section "Visiualizations")
- [API documentation][link-api].
- [Example notebooks][link-notebooks] (section "Visiualizations")

## Installation

Expand Down
18 changes: 9 additions & 9 deletions docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,11 +99,11 @@ Specify `vX.X.X` as a tag name and create a release. For more information, see [

Please write documentation for new or changed features and use-cases. This project uses [sphinx][] with the following features:

- the [myst][] extension allows to write documentation in markdown/Markedly Structured Text
- [Numpy-style docstrings][numpydoc] (through the [napoloen][numpydoc-napoleon] extension).
- Jupyter notebooks as tutorials through [myst-nb][] (See [Tutorials with myst-nb](#tutorials-with-myst-nb-and-jupyter-notebooks))
- [Sphinx autodoc typehints][], to automatically reference annotated input and output types
- Citations (like {cite:p}`Virshup_2023`) can be included with [sphinxcontrib-bibtex](https://sphinxcontrib-bibtex.readthedocs.io/)
- the [myst][] extension allows to write documentation in markdown/Markedly Structured Text
- [Numpy-style docstrings][numpydoc] (through the [napoloen][numpydoc-napoleon] extension).
- Jupyter notebooks as tutorials through [myst-nb][] (See [Tutorials with myst-nb](#tutorials-with-myst-nb-and-jupyter-notebooks))
- [Sphinx autodoc typehints][], to automatically reference annotated input and output types
- Citations (like {cite:p}`Virshup_2023`) can be included with [sphinxcontrib-bibtex](https://sphinxcontrib-bibtex.readthedocs.io/)

See the [scanpy developer docs](https://scanpy.readthedocs.io/en/latest/dev/documentation.html) for more information
on how to write documentation.
Expand All @@ -120,10 +120,10 @@ repository.

#### Hints

- If you refer to objects from other packages, please add an entry to `intersphinx_mapping` in `docs/conf.py`. Only
if you do so can sphinx automatically create a link to the external documentation.
- If building the documentation fails because of a missing link that is outside your control, you can add an entry to
the `nitpick_ignore` list in `docs/conf.py`
- If you refer to objects from other packages, please add an entry to `intersphinx_mapping` in `docs/conf.py`. Only
if you do so can sphinx automatically create a link to the external documentation.
- If building the documentation fails because of a missing link that is outside your control, you can add an entry to
the `nitpick_ignore` list in `docs/conf.py`

#### Building the docs locally

Expand Down
9 changes: 9 additions & 0 deletions tests/pl/test_render_points.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import pytest
import scanpy as sc
from anndata import AnnData
from spatialdata import SpatialData, deepcopy
Expand Down Expand Up @@ -111,6 +112,14 @@ def test_plot_datashader_continuous_color(self, sdata_blobs: SpatialData):
element="blobs_points", size=40, color="instance_id", alpha=0.6, method="datashader"
).pl.show()

@pytest.mark.parametrize("method", ["matplotlib", "datashader"])
def test_plot_points_categorical_color_column(self, sdata_blobs: SpatialData, method: str):
sdata_blobs.pl.render_points("blobs_points", color="genes", method=method).pl.show()

@pytest.mark.parametrize("method", ["matplotlib", "datashader"])
def test_plot_points_continuous_color_column(self, sdata_blobs: SpatialData, method: str):
sdata_blobs.pl.render_points("blobs_points", color="instance_id", method=method).pl.show()

def test_plot_datashader_matplotlib_stack(self, sdata_blobs: SpatialData):
sdata_blobs.pl.render_points(
element="blobs_points", size=40, color="red", method="datashader"
Expand Down
Loading