Quick plot for cytometry data

library(ggcyto)
dataDir <- system.file("extdata",package="flowWorkspaceData")
gs <- load_gs(list.files(dataDir, pattern = "gs_bcell_auto",full = TRUE))
data(GvHD)
fs <- GvHD[subset(pData(GvHD), Patient %in%5 & Visit %in% c(5:6))[["name"]]]

flowSet

geom_density layer is used for one-dimensional plot.

autoplot(fs, x = 'FSC-H')

geom_hex layer is added for 2d plot.

autoplot(fs, x = 'FSC-H', y = 'SSC-H', bins = 64)

## flowFrame For the flowFrame, it can display one-dimensional plots for all channels by not supplying the x argument.

autoplot(fs[[1]]) + labs_cyto("marker")

GatingSet

autoplot(gs, "CD3", bins = 64)

Here are some default settings applied:

  • The instrument range is applied by default (through ggcyto_par_set(limits = "instrument")).
  • “CD3” gate is plotted aganst its the parent population: “Live”.”
  • Axis labels are inverse transformed through axis_x_inverse_trans/axis_x_inverse_trans.

Multiple gates that share the same parent can be plotted together.

autoplot(gs, c("CD3", "CD19"), bins = 64)

GatingHierarchy

Multiple cell populations with their asssociated gates can be plotted in different panels of the same plot.

gh <- gs[[1]]
nodes <- gs_get_pop_paths(gh, path = "auto")[c(3:6)]
nodes
## [1] "lymph" "Live"  "CD20"  "CD19"
autoplot(gh, nodes, bins = 64)

ggcyto_arrange

Optionally we can manually arrange it as a gtable object and manipulate the layout afterwards.

# get ggcyto_GatingLayout object from first sample
res <- autoplot(gs[[1]], nodes, bins = 64)
class(res)
## [1] "ggcyto_GatingLayout"
## attr(,"package")
## [1] "ggcyto"
# arrange it as one-row gtable object 
gt <- ggcyto_arrange(res, nrow = 1)
gt
## TableGrob (2 x 4) "arrange": 5 grobs
##       z     cells    name                 grob
## lymph 1 (2-2,1-1) arrange       gtable[layout]
## Live  2 (2-2,2-2) arrange       gtable[layout]
## CD20  3 (2-2,3-3) arrange       gtable[layout]
## CD19  4 (2-2,4-4) arrange       gtable[layout]
##       5 (1-1,1-4) arrange text[GRID.text.3678]
# do the same to the second sample
gt2 <- ggcyto_arrange(autoplot(gs[[2]], nodes, bins = 64), nrow = 1)
# combine the two and print it on the sampe page
gt3 <- gridExtra::gtable_rbind(gt, gt2)
plot(gt3)