Skip to content

Generate HTML-based Volcano Plot

Usage

plotVolcanoHTML(data, FC, p.value, cutoff, fc.cutoff, main, x.lab, ...)

# S3 method for data.frame
plotVolcanoHTML(
  data,
  FC,
  p.value,
  cutoff = 0.05/nrow(data),
  fc.cutoff = 1,
  main = NULL,
  x.lab = NULL,
  labels,
  ...
)

# S3 method for stat_table
plotVolcanoHTML(
  data,
  FC,
  p.value,
  cutoff = 0.05/nrow(data$stat.table),
  fc.cutoff = 1,
  main = NULL,
  x.lab = NULL,
  tbl,
  ...
)

Arguments

data

A data frame containing log2-transformed fold-changes and corresponding p-values. An optional third column containing, e.g. "Target" Names, can be passed if specified by the labels = parameter.

FC

An unquoted string identifying the column in data containing a vector log2()-transformed fold-changes.

p.value

An unquoted string identifying the column in data containing a vector of p-values.

cutoff

Horizontal statistical significance cutoff for coloring points. Defaults to Bonferroni corrected significance at alpha = 0.05 in "p-value" linear space [0, 1].

fc.cutoff

Placement for the cutoff for coloring points along the fold-change x-axis. Defaults to doubling in fold-change (1).

main

Character. Main title for the plot. See ggtitle() for ggplot2 style graphics.

x.lab

Character. Optional string for the x-axis. Otherwise one is automatically generated (default).

...

Additional arguments passed to plotly::plotly().

labels

An unquoted string identifying the column in data containing point labels, typically "Target" or "Analyte" names.

tbl

A tibble object containing analyte target annotation information. This is usually the result of a call to getAnalyteInfo().

Methods (by class)

  • plotVolcanoHTML(data.frame): Plot method for objects of class data.frame.

  • plotVolcanoHTML(stat_table): Plot method for objects of class stat_table (SomaLogic internal).

See also

plotly::plotly()

Other volcano: plotVolcano()

Author

Leigh Alexander, Stu Field

Examples

# Dummy up a fake table with minimal variables
adat <- SomaDataIO::example_data
seqs <- SomaDataIO::getAnalytes(adat)
target_map <- SomaDataIO::getTargetNames(SomaDataIO::getAnalyteInfo(adat))
df <- withr::with_seed(101, {
  fc1 <- sort(runif(500, -2.5, 0))   # Z-scores as dummy fold-changes
  fc2 <- sort(runif(500, 0, 2.5))    # Z-scores as dummy fold-changes
  p1  <- pnorm(fc1)                  # p-values for neg. scores
  p2  <- pnorm(fc2, lower.tail = FALSE) # p-values for pos. scores
  p   <- jitter(c(p1, p2), amount = 0.1) # add noise
  p[p < 0] <- runif(sum(p < 0), 1e-05, 1e-02) # floor p > 0 after jitter
  seq_vec <- sample(seqs, length(p))   # random seqIds
  data.frame(
    AptName = seq_vec,
    t_stat  = runif(50, 10, 20),
    log2_fc = c(fc1, fc2),
    p_value = p,
    target  = unlist(target_map)[seq_vec]  # map random target names
  )
})

# S3 `data.frame` method
# No TargetNames -> `NA`
plotVolcanoHTML(df, log2_fc, p_value, cutoff = 0.1, fc.cutoff = 0.5)
# Add TargetNames via `labels=` plotVolcanoHTML(df, log2_fc, p_value, cutoff = 0.1, fc.cutoff = 0.5, labels = target)