spatialdata-plot icon indicating copy to clipboard operation
spatialdata-plot copied to clipboard

Wrong colors when using `method='datashader'`

Open LucaMarconato opened this issue 1 year ago • 4 comments

When method=datashader is used the colors that are produced are wrong. Strangely the colorbar is correct. Initially I though this was due to the choice of the agg function when each pixel of the rasterized image was overlapping multiple elements. But since this problem appears also for large bins, which span several pixels, and since no border effect is observed, I believe that the problem lies elsewhere.

Code to reproduce.

##
import spatialdata_plot
from spatialdata import read_zarr, bounding_box_query
import matplotlib.pyplot as plt

f = 'spatialdata-sandbox/visium_hd_3.0.0_io/data.zarr'

sdata = read_zarr(f)
sdata

for table in sdata.tables.values():
    table.var_names_make_unique()

##
crop = lambda x: bounding_box_query(
    x, min_coordinate=[5000, 7000], max_coordinate=[10000, 12000], axes=("x", "y"), target_coordinate_system="global"
)
gene_name = "AA986860"

##
crop(sdata).pl.render_shapes('Visium_HD_Mouse_Small_Intestine_square_016um', color=gene_name).pl.show(coordinate_systems='global')
plt.show()

##
crop(sdata).pl.render_shapes('Visium_HD_Mouse_Small_Intestine_square_016um', color=gene_name, method='datashader').pl.show(coordinate_systems='global')
plt.show()

LucaMarconato avatar Jul 18 '24 20:07 LucaMarconato

This is the first plot, the correct one (method='matplotlib'). image

This is the second plot, the wrong one (method='datashader'). image

LucaMarconato avatar Jul 18 '24 20:07 LucaMarconato

Thanks @LucaMarconato! The aggregation is correct, but shade() uses an equi-width histogram for coloring per default, while we want the linear version. Now it looks like this using datashader

grafik

Sonja-Stockhaus avatar Jul 19 '24 15:07 Sonja-Stockhaus

Thanks for checking into this!

LucaMarconato avatar Jul 19 '24 16:07 LucaMarconato

Update: different aggregation functions require different colorbars, we are working into this.

LucaMarconato avatar Aug 12 '24 12:08 LucaMarconato