The data that will be used to showcase the function is a tissue-CyCIF PDAC dataset from Lin et al. The preprocessing begins by adding manual annotations for each cell’s location in the tissue sample.
data("pdacData")
pdacData$cellID <- paste0('cell_', 1:nrow(pdacData))
pdacData$Yt <- -pdacData$Yt
pancreas_frames = c(1:6, 27:31, 15:19, 40:44)
PDAC_frames = c(23:26, 35:37, 51:52, 64:65, 77)
small_intestines_frames = c(49:50, 63, 75:76, 88:89, 100:103, 112:116, 125:129, 137:140)
annotateLocation <- function(frame){
if (frame %in% pancreas_frames){return("Pancreas")}
if (frame %in% PDAC_frames){return("PDAC")}
if (frame %in% small_intestines_frames){return("Small Intestine")}
return("Other")
}
pdacData$location <- sapply(pdacData$frame, annotateLocation)
head(pdacData[, c('Xt', 'Yt', 'location', 'frame')])
#> Xt Yt location frame
#> 1 1342.878 -801.154 Pancreas 1
#> 2 5688.494 -1391.393 Pancreas 4
#> 3 6295.826 -1393.807 Pancreas 4
#> 4 5344.257 -1391.650 Pancreas 4
#> 5 5640.034 -1391.416 Pancreas 4
#> 6 5923.357 -1390.776 Pancreas 4
scatterHatch()
must have a data frame passed to it,
along with three strings denoting the columns with the x/y coordinates
and a factor variable of each point being plotted. The factor variable
identifies the group each point is a part of.
scatterHatch()
returns a ggplot2 object with three layers;
the points, the line segments (the hatching), and an invisible custom
geom to render the legend icons.
Controlling the aesthetics of each pattern is done by passing a list
to the patternList
argument. Each element of the list
should contain a list that denotes the desired aesthetics for each
pattern. Every element of patternList
must have a named
element called “pattern” that contains the unique pattern type for which
the aesthetics are being changed. If patternList is passed, then the
length of patternList must be equal to the number of groups being
plotted.
Angle denotes the angle(s) for which the lines of a particular
hatching pattern should be drawn. For example, the default horizontal
pattern (“+”) is an angle of 0 while the default vertical pattern (“-”)
is an angle of 90. Angle can be a vector with multiple angles. For
example, the cross (“x”) is a vector of angles:
c(135, 45)
.
Argument | Description |
---|---|
data | A dataframe of the dataset being plotted |
x | A string describing the column name with the x-coordinates of the points being plotted |
y | A string describing the column name with the y-coordinates of the points being plotted |
factor | A string describing the column name of the factor variable |
legendTitle | The legend title |
pointSize | ggplot2 point size |
pointAlpha | Transparency of each point |
gridSize | Integer describing the precision of the hatched patterns. Larger the value, greater the precision at the expense of efficiency. Default segregates plots into 10000 bins |
sparsePoints | A logical vector that denotes the outlying points. Default utilizies an in-built sparsity detector |
patternList | List containing the aesthethics of each pattern |
colorPalette | Character vector describing the point color of each group; default is color-blind friendly and uses colors from the dittoSeq package |
These pattern aesthetics are passed into a list in the patternList
argument of scatterHatch()
.
Aesthetics | Description |
---|---|
pattern | A string representing one of the possible 7 patterns to be used: (horizontal or “-”), (vertical or “|”), (positiveDiagonal or “/”), (negativeDiagonal or “"), (checkers or”+“), (cross or”x”), and (blank or ““). |
angle | Vector or number denoting at what angle(s) the lines in
a hatching pattern should be drawn -
e.g. c(45, 90, 135) |
lineWidth | Number representing the width of the lines in the pattern |
lineColor | String representing the colors of the lines in the pattern (black, white, etc.) |
lineType | String representing the type of lines in the pattern (solid, dashed, etc.) |
sessionInfo()
#> R version 4.4.2 (2024-10-31)
#> Platform: x86_64-pc-linux-gnu
#> Running under: Ubuntu 24.04.1 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=en_US.UTF-8 LC_NUMERIC=C
#> [3] LC_TIME=en_US.UTF-8 LC_COLLATE=C
#> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
#> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
#> [9] LC_ADDRESS=C LC_TELEPHONE=C
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
#>
#> time zone: Etc/UTC
#> tzcode source: system (glibc)
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] scatterHatch_1.13.0 rmarkdown_2.29
#>
#> loaded via a namespace (and not attached):
#> [1] Matrix_1.7-1 gtable_0.3.6 jsonlite_1.8.9
#> [4] compiler_4.4.2 spatstat.utils_3.1-1 Rcpp_1.0.13-1
#> [7] jquerylib_0.1.4 scales_1.3.0 yaml_2.3.10
#> [10] fastmap_1.2.0 lattice_0.22-6 plyr_1.8.9
#> [13] ggplot2_3.5.1 deldir_2.0-4 R6_2.5.1
#> [16] spatstat.univar_3.1-1 labeling_0.4.3 spatstat.geom_3.3-4
#> [19] knitr_1.49 polyclip_1.10-7 tibble_3.2.1
#> [22] maketools_1.3.1 munsell_0.5.1 bslib_0.8.0
#> [25] pillar_1.9.0 rlang_1.1.4 utf8_1.2.4
#> [28] cachem_1.1.0 xfun_0.49 sass_0.4.9
#> [31] sys_3.4.3 cli_3.6.3 withr_3.0.2
#> [34] magrittr_2.0.3 digest_0.6.37 grid_4.4.2
#> [37] lifecycle_1.0.4 vctrs_0.6.5 evaluate_1.0.1
#> [40] glue_1.8.0 farver_2.1.2 buildtools_1.0.0
#> [43] fansi_1.0.6 colorspace_2.1-1 spatstat.data_3.1-4
#> [46] tools_4.4.2 pkgconfig_2.0.3 htmltools_0.5.8.1