Learn R Programming

neurobase (version 1.32.4)

multi_overlay: Create Multi-Image Plot with Overlays

Description

Creates a multi-row or multi-column plot with image slices and the potential for overlays as well.

Usage

multi_overlay(
  x,
  y = NULL,
  z = NULL,
  w = 1,
  mask = NULL,
  col.x = gray(0:64/64),
  col.y = hotmetal(),
  zlim.x = NULL,
  zlim.y = NULL,
  ybreaks = NULL,
  plane = c("axial", "coronal", "sagittal"),
  xlab = "",
  ylab = "",
  axes = FALSE,
  direction = c("horizontal", "vertical"),
  par.opts = list(oma = c(0, 0, 0, 0), mar = rep(0, 4), bg = "black"),
  text = NULL,
  text.x = 0.5,
  text.y = 1.4,
  text.cex = 2.5,
  text.col = "white",
  main = NULL,
  main.col = text.col,
  main.cex = text.cex,
  NA.x = TRUE,
  NA.y = TRUE,
  pdim = NULL,
  useRaster = TRUE,
  ...
)

multi_overlay_center(x, y = NULL, ...)

Arguments

x

List of images of class nifti or character vector of filenames

y

List of images of class nifti or character vector of filenames. Same length as x.

z

Slice to display.

w

3D volume to display if x has 4-D elements

mask

nifti image to drop empty image dimensions if wanted. Passed to dropEmptyImageDimensions

col.x

Color to display x images

col.y

Color to display y images

zlim.x

Limits for x to plot

zlim.y

Limits for y to plot

ybreaks

(numeric) breaks for y to passed to image

plane

the plane of acquisition to be displayed

xlab

Label for x-axis

ylab

Label for y-axis

axes

Should axes be displayed

direction

Should images be a row or column? Ignored if mfrow is in par.opts

par.opts

Options to pass to par

text

Text to be displayed

text.x

Location of text in x-domain

text.y

Location of text in y-domain

text.cex

Multiplier for text font

text.col

Color for text and main.

main

Title for each plot

main.col

Color for main. Will default to text.col

main.cex

Multiplier for text font. Will default to text.cex

NA.x

Should 0's in x be set to NA?

NA.y

Should 0's in y be set to NA?

pdim

Pixel dimensions if passing in arrays. Will be overridden if x is a nifti object

useRaster

if TRUE, a bitmap raster is used to plot the image instead of polygons. Passed to image

...

Additional arguments to pass to image

Examples

Run this code
set.seed(5)
dims = rep(10, 4)
arr = array(rnorm(prod(dims)), dim = dims)
arr[,,,c(3, 5)] = rpois(1000*2, lambda = 2)
nim = oro.nifti::nifti(arr)
mask = nim > 2
add_mask = nim[,,,1] > 0
imgs = img_ts_to_list(nim) 
masks = img_ts_to_list(mask) 
multi_overlay(imgs, masks)
multi_overlay(imgs, masks, 
main = "hey", direction = "vertical", plane = "coronal")
multi_overlay(imgs, masks, mask = add_mask, 
main = "hey")



if (FALSE) {

 if (requireNamespace("brainR", quietly = TRUE)) {
   visits = 1:3
   y = paste0("Visit_", visits, ".nii.gz")
   y = system.file(y, package = "brainR")
   y = lapply(y, readnii)

   y = lapply(y, function(r){
     pixdim(r) = c(0, rep(1, 3), rep(0, 4))
     dropImageDimension(r)
   })

   x = system.file("MNI152_T1_1mm_brain.nii.gz", 
                 package = "brainR")
   x = readnii(x)
   mask = x >0
   x = lapply(visits, function(tmp){
       x
   })
   alpha = function(col, alpha = 1) {
       cols = t(col2rgb(col, alpha = FALSE)/255)
       rgb(cols, alpha = alpha)
   }
   multi_overlay(x, y, 
         col.y = alpha(hotmetal(), 0.5),
         mask = mask, 
         main = paste0("\n", "Visit ", visits),
         text = LETTERS[visits],
         text.x = 0.9,
         text.y = 0.1,
         text.cex = 3)
 }
}

Run the code above in your browser using DataLab