## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(cache=FALSE, message=FALSE, warning=FALSE)

## ----inst, eval=FALSE---------------------------------------------------------
# if (require("BiocManager", quietly=TRUE))
#     install.packages("BiocManager")
# BiocManager::install("SpatialData.plot")

## ----load-deps----------------------------------------------------------------
library(ggplot2)
library(patchwork)
library(ggnewscale) 
library(spatialdataR)
library(SpatialData.plot)

## ----read-data----------------------------------------------------------------
x <- file.path("extdata", "blobs.zarr")
x <- system.file(x, package="spatialdataR")
(x <- readSpatialData(x))

## ----ms-show------------------------------------------------------------------
image(x, "blobs_image")
image(x, "blobs_multiscale_image")

## ----ms-dims------------------------------------------------------------------
i <- image(x, "blobs_multiscale_image")
vapply(data(i, k=NULL), dim, numeric(3))

## ----ms-plot------------------------------------------------------------------
wrap_plots(nrow=1, lapply(seq(3), \(.) 
    plotSpatialData(x) + plotImage(i=2, k=.)))

## ----plotLabel, fig.width=9, fig.height=3.5-----------------------------------
i <- "blobs_labels"
t <- getTable(x, i)
t$id <- sample(letters, ncol(t))
table(x) <- t

p <- plotSpatialData(x)
pal_d <- hcl.colors(10, "Spectral")
pal_c <- hcl.colors(9, "Inferno")[-9]

a <- p + plotLabel(i, pal="grey")                   # binary
b <- p + plotLabel(i, c="id", pal=pal_d)            # metadata
c <- p + plotLabel(i, c="channel_1_sum", pal=pal_c) # assay

(a | b | c) + 
    plot_layout(guides="collect") & 
    theme(legend.position="bottom")

## ----plotPoint, fig.width=10, fig.height=3------------------------------------
i <- "blobs_points"
a <- p + plotPoint(i=i)
b <- p + plotPoint(i=i, col="genes")       # discrete
c <- p + plotPoint(i=i, col="instance_id") # continuous
(a | b | c) 

## ----plotShape, fig.width=8, fig.height=3-------------------------------------
p <- plotSpatialData(x)
a <- p +
    labs(title="polygons") +
    plotShape(i="blobs_polygons")
b <- p +
    labs(title="multipolygons") +
    plotShape(i="blobs_multipolygons")
c <- p +
    labs(title="circles") +
    plotShape(i="blobs_circles")
(a | b | c)

## ----blobs-plot, fig.width=8, fig.height=5------------------------------------
p <- plotSpatialData(x)
# joint
all <- p +
    plotImage() +
    plotLabel(a=1/3) +
    plotShape(i=1) +
    plotShape(i=3) +
    new_scale_color() +
    plotPoint(col="genes") +
    labs(title="layered")
# split
one <- list(
    p + plotImage() + labs(title="image"),
    p + plotLabel() + labs(title="labels"),
    p + plotShape(i=1) + labs(title="circles"),
    p + plotShape(i=3) + labs(title="polygons"),
    p + plotPoint(col="genes") + labs(title="points"))
wrap_plots(c(list(all), one), nrow=2)

## -----------------------------------------------------------------------------
plotSpatialData(x) +
    plotImage() +
    plotLabel(a=1/3) +
    scalebar(len=10, xrel=0.05, yrel=0.95)

## ----sessionInfo, echo=FALSE--------------------------------------------------
sessionInfo()

