example <- readRDS(url("https://alserglab.wustl.edu/files/mascarade/examples/pbmc3k_umap.rds"))
data <- data.table(example$dims,
cluster=example$clusters)
maskTable <- generateMask(dims=example$dims,
clusters=example$clusters)
ggplot(data, aes(x=UMAP_1, y=UMAP_2)) +
geom_point(aes(color=cluster)) +
geom_path(data=maskTable, aes(group=group)) +
coord_fixed() +
theme_classic()With labels:
ggplot(data, aes(x=UMAP_1, y=UMAP_2)) +
geom_point(aes(color=cluster)) +
fancyMask(maskTable, ratio=1, linewidth = 0) +
theme_classic() + theme(legend.position = "none")example <- readRDS(url("https://alserglab.wustl.edu/files/mascarade/examples/pbmc3k_tsne.rds"))
data <- data.table(example$dims,
cluster=example$clusters)
maskTable <- generateMask(dims=example$dims,
clusters=example$clusters)
ggplot(data, aes(x=tSNE_1, y=tSNE_2)) +
geom_point(aes(color=cluster)) +
geom_path(data=maskTable, aes(group=group)) +
coord_fixed() +
theme_classic()With labels:
ggplot(data, aes(x=tSNE_1, y=tSNE_2)) +
geom_point(aes(color=cluster)) +
fancyMask(maskTable, ratio=1, linewidth = 0) +
theme_classic() + theme(legend.position = "none")example <- readRDS(url("https://alserglab.wustl.edu/files/mascarade/examples/aya.rds"))
data <- data.table(example$dims,
cluster=example$clusters)
maskTable <- generateMask(dims=example$dims,
clusters=example$clusters)
ggplot(data, aes(x=UMAP_1, y=UMAP_2)) +
geom_point(aes(color=cluster), size=0.5) +
scale_color_repel() +
geom_path(data=maskTable, aes(group=group)) +
coord_fixed() +
theme_classic()example <- readRDS(url("https://alserglab.wustl.edu/files/mascarade/examples/chiajung1.rds"))
data <- data.table(example$dims,
cluster=example$clusters)
maskTable <- generateMask(dims=example$dims,
clusters=example$clusters)
ggplot(data, aes(x=UMAP_1, y=UMAP_2)) +
geom_point(aes(color=cluster), size=0.1) +
scale_color_repel() +
geom_path(data=maskTable, aes(group=group)) +
coord_fixed() +
theme_classic()example <- readRDS(url("https://alserglab.wustl.edu/files/mascarade/examples/chiajung2.rds"))
data <- data.table(example$dims,
cluster=example$clusters)
maskTable <- generateMask(dims=example$dims,
clusters=example$clusters)
ggplot(data, aes(x=UMAP_1, y=UMAP_2)) +
geom_point(aes(color=cluster)) +
scale_color_repel() +
geom_path(data=maskTable, aes(group=group)) +
coord_fixed() +
theme_classic()Really hard case, so playing with parameters a bit to make more space.
example <- readRDS(url("https://alserglab.wustl.edu/files/mascarade/examples/vshitov.rds"))
data <- data.table(example$dims,
cluster=example$clusters)
maskTable <- generateMask(dims=example$dims,
clusters=example$clusters)
ggplot(data, aes(x=UMAP1, y=UMAP2)) +
geom_point(aes(color=cluster), size=0.1) +
scale_color_repel() +
fancyMask(maskTable,
con.type = "line", # ledges clutter the image visually here
ratio=1,
linewidth = 0,
limits.expand = c(0.2, 0.1), # more space to the left and right of the plot
label.buffer = unit(1, "mm"), # smaller buffer zone around clusters
label.width = unit(25, "mm"), # wrap long lines
label.margin = margin(1, 1, 1, 1, "pt"), # tighter label margins
label.fontsize = 10) +
theme_classic() + theme(legend.position = "none")## R version 4.6.1 (2026-06-24)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.4 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so; LAPACK version 3.12.0
##
## locale:
## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8
## [4] LC_COLLATE=C LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8
## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C
## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C
##
## time zone: UTC
## tzcode source: system (glibc)
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] colorrepel_0.5.0 ggplot2_4.0.3 data.table_1.18.4 mascarade_0.4.1
##
## loaded via a namespace (and not attached):
## [1] dqrng_0.4.1 sass_0.4.10 generics_0.1.4
## [4] spatstat.explore_3.8-1 gtools_3.9.5 polylabelr_1.0.0
## [7] tensor_1.5.1 distances_0.1.13 spatstat.data_3.1-9
## [10] lattice_0.22-9 digest_0.6.39 magrittr_2.0.5
## [13] spatstat.utils_3.2-4 evaluate_1.0.5 grid_4.6.1
## [16] RColorBrewer_1.1-3 fastmap_1.2.0 jsonlite_2.0.0
## [19] Matrix_1.7-5 spatstat.sparse_3.2-0 purrr_1.2.2
## [22] scales_1.4.0 tweenr_2.0.3 jquerylib_0.1.4
## [25] abind_1.4-8 cli_3.6.6 rlang_1.3.0
## [28] polyclip_1.10-7 withr_3.0.3 cachem_1.1.0
## [31] yaml_2.3.12 otel_0.2.0 spatstat.univar_3.2-0
## [34] tools_4.6.1 deldir_2.0-4 dplyr_1.2.1
## [37] spatstat.geom_3.8-1 vctrs_0.7.3 R6_2.6.1
## [40] matrixStats_1.5.0 lifecycle_1.0.5 MASS_7.3-65
## [43] pkgconfig_2.0.3 pillar_1.11.1 bslib_0.11.0
## [46] gtable_0.3.6 glue_1.8.1 Rcpp_1.1.2
## [49] systemfonts_1.3.2 ggforce_0.5.0 xfun_0.60
## [52] tibble_3.3.1 tidyselect_1.2.1 knitr_1.51
## [55] goftest_1.2-3 farver_2.1.2 htmltools_0.5.9
## [58] spatstat.random_3.5-0 nlme_3.1-169 labeling_0.4.3
## [61] rmarkdown_2.31 compiler_4.6.1 S7_0.2.2