Creating a Scatterplot with Texture

Tejas Guha

January 21, 2021

Importing Local Libraries

library(scatterHatch)

Preparing the Data

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

Creating a Basic ScatterHatch Plot

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.

plt <- scatterHatch(data = pdacData, x = "Xt", y = "Yt", color_by = "location", legendTitle = "Tissue Type")
plot(plt)