This function visualizes the clusters for one given sample at the spot-level
using (by default) the histology information on the background. To visualize
gene-level (or any continuous variable) use vis_gene().
vis_clus(
spe,
sampleid = unique(spe$sample_id)[1],
clustervar,
colors = c("#b2df8a", "#e41a1c", "#377eb8", "#4daf4a", "#ff7f00", "gold", "#a65628",
"#999999", "black", "grey", "white", "purple"),
spatial = TRUE,
image_id = "lowres",
alpha = NA,
point_size = 2,
auto_crop = TRUE,
na_color = "#CCCCCC40",
is_stitched = FALSE,
guide_point_size = point_size,
datatype = c("Visium", "Xenium"),
...
)A
SpatialExperiment-class
object. See fetch_data() for how to download some example objects or
read10xVisiumWrapper() to read in spaceranger --count output files and
build your own spe object.
A character(1) specifying which sample to plot from
colData(spe)$sample_id (formerly colData(spe)$sample_name).
A character(1) with the name of the colData(spe)
column that has the cluster values.
A vector of colors to use for visualizing the clusters
from clustervar. If the vector has names, then those should match the
values of clustervar.
A logical(1) indicating whether to include the histology
layer from geom_spatial(). If you plan to use
ggplotly() then it's best to set this to FALSE.
A character(1) with the name of the image ID you want to
use in the background.
A numeric(1) in the [0, 1] range that specifies the
transparency level of the data on the spots.
A numeric(1) specifying the size of the points. Defaults
to 1.25. Some colors look better if you use 2 for instance.
A logical(1) indicating whether to automatically crop
the image / plotting area, which is useful if the Visium capture area is
not centered on the image and if the image is not a square.
A character(1) specifying a color for the NA values.
If you set alpha = NA then it's best to set na_color to a color that has
alpha blending already, which will make non-NA values pop up more and the NA
values will show with a lighter color. This behavior is lost when alpha is
set to a non-NA value.
A logical(1) vector: If TRUE, expects a
SpatialExperiment-class built
with visiumStitched::build_spe().
http://research.libd.org/visiumStitched/reference/build_spe.html; in
particular, expects a logical colData column exclude_overlapping
specifying which spots to exclude from the plot. Sets auto_crop = FALSE.
A numeric(1) specifying the size of the points in
guide. Defaults to point_size. Increase to improve visibility.
A character(1) specifying the type of spatial transcriptomics
data stored in spe. Supported options are:
"Visium"(Default) Expects pxl_col_in_fullres and
pxl_row_in_fullres as columns of spatialCoords(spe). Enables
image handling via the spatialData slot.
"Xenium"Expects x_centroid and y_centroid as columns
of spatialCoords(spe).
Passed to paste0() for making the title of the
plot following the sampleid.
A ggplot2 object.
This function subsets spe to the given sample and prepares the
data and title for vis_clus_p() or vis_clus_c().
Other Spatial cluster visualization functions:
frame_limits(),
vis_clus_c(),
vis_clus_p(),
vis_grid_clus(),
vis_image()
if (enough_ram()) {
## Obtain the necessary data: Visium example
if (!exists("spe")) spe <- fetch_data("spe")
## Check the colors defined by Lukas M Weber
libd_layer_colors
## Use the manual color palette by Lukas M Weber
p1 <- vis_clus(
spe = spe,
clustervar = "layer_guess_reordered",
sampleid = "151673",
colors = libd_layer_colors,
... = " LIBD Layers"
)
print(p1)
## Without auto-cropping the image
p2 <- vis_clus(
spe = spe,
clustervar = "layer_guess_reordered",
sampleid = "151673",
colors = libd_layer_colors,
auto_crop = FALSE,
... = " LIBD Layers"
)
print(p2)
## Without histology
p3 <- vis_clus(
spe = spe,
clustervar = "layer_guess_reordered",
sampleid = "151673",
colors = libd_layer_colors,
... = " LIBD Layers",
spatial = FALSE
)
print(p3)
## With some NA values
spe$tmp <- spe$layer_guess_reordered
spe$tmp[spe$sample_id == "151673"][seq_len(500)] <- NA
p4 <- vis_clus(
spe = spe,
clustervar = "tmp",
sampleid = "151673",
colors = libd_layer_colors,
na_color = "white",
... = " LIBD Layers"
)
print(p4)
## edit plot point size but keep guide size larger
p5 <- vis_clus(
spe = spe,
clustervar = "layer_guess_reordered",
sampleid = "151673",
colors = libd_layer_colors,
na_color = "white",
point_size = 1,
guide_point_size = 3,
... = " LIBD Layers"
)
print(p5)
## Obtain the necessary data: Xenium example
if (!exists("spe_xenium")) spe_xenium <- fetch_data("spe_xenium_example")
spe_xenium$x_half <- ifelse(spatialCoords(spe_xenium)[,"x_centroid"] < 3088, "left", "right")
p6 <- vis_clus(
spe = spe_xenium,
clustervar = "x_half",
sampleid = "Br1556",
colors = c(left = "red", right = "blue"),
na_color = "white",
point_size = 1,
alpha = 0.5,
guide_point_size = 3,
datatype = "Xenium"
)
print(p6)
}
#> 2026-09-28 14:55:15.361957 loading file /github/home/.cache/R/BiocFileCache/e2d3506994e_Human_DLPFC_Visium_processedData_sce_scran_spatialLIBD.Rdata%3Fdl%3D1
#> 2026-09-28 14:55:26.967028 loading file /github/home/.cache/R/BiocFileCache/e2d6c76d1f9_spe_Xenium_test.rds%3Frlkey%3D0ql1pu5d9qe448sjmkh3ja3o8%26st%3Dnpwqxtdk%26dl%3D1