Skip to contents

This article is a browsable reference to the analysis panels a shinyngs application can present. Each entry describes what the panel shows and what inputs it needs, drawn from the per-panel help text that the app itself surfaces via the help icons in each panel’s header.

Most panels are built on Shiny modules and share a common set of controls. In particular, plotting panels use the selectmatrix control group to choose an experiment and assay (a features x samples matrix), and to subset its rows and columns. Where variance-based row selection is offered, the 1000 most variant rows are selected by default, since the strongest patterns are usually clearest in the more variable features. Panels that operate on differential results additionally require contrasts (comparisons between sample groups, with results in the object’s tests slot), and gene-set panels require uploaded gene sets (e.g. GO, KEGG, from GMT files).

Every plot below is backed by a standalone plotting function you can call directly on your own data. See reusing these plots outside Shiny for how to drive those functions without launching an app.

Exploratory

Panels for getting a first look at structure, quality, and clustering across samples. These operate on assay matrices and sample metadata; they do not require differential results.

PCA

Principal component analysis reduces high-dimensional data (tens of thousands of features) to a handful of components, each a fixed linear combination of the original features. The components plot plots the first components against one another and should separate samples by the strongest patterns in the data; colouring points by a sample variable (treatment, sex, sequencing lane) reveals which factors drive that structure. The loading plot shows which features contributed most to each component, and the scree plot shows the percentage of variance explained by each component (plus the cumulative total), helping you judge how many components are worth examining.

Inputs: an assay matrix (variable rows selected by default), a choice of which components to display, and a sample variable to colour by. Backed by: compile_pca_data, with points drawn via interactive_scatterplot and the scree curve via interactive_screeplot.

Components plot for a 3D PCA, coloured by sample group
Components plot for a 3D PCA, coloured by sample group


Loading plot showing which features contribute most to each component
Loading plot showing which features contribute most to each component


Scree plot: percentage and cumulative percentage of variance explained by component
Scree plot: percentage and cumulative percentage of variance explained by component

PCA vs experiment

A companion to the PCA panel that helps interpret what the components mean. An analysis of variance is run for each component against each experimental factor, and the resulting matrix of p-values is drawn as a heatmap. Ideally the key experimental variables are associated with the first, highest-variance components; strong association of a technical factor (e.g. sequencing lane) with an early component flags a variable to account for downstream.

Inputs: an assay matrix (variable rows by default) and the set of experimental variables to test. Backed by: interactive_pca_metadata_heatmap.

PCA-vs-experiment heatmap: association p-values between each component and each experimental variable
PCA-vs-experiment heatmap: association p-values between each component and each experimental variable

Sample clustering heatmap

Computes a matrix of correlation values between pairs of samples and draws it as a heatmap with an accompanying dendrogram, an alternative view of sample relatedness to the dendrogram panel. Experimental annotations can be added as coloured bars above the heatmap via the “Annotate with variables” control.

Inputs: an assay matrix (variable rows by default) and optional annotation variables. Backed by: interactive_heatmap.

Sample-by-sample correlation heatmap with dendrogram and group/tissue annotation bars
Sample-by-sample correlation heatmap with dendrogram and group/tissue annotation bars

Dendrogram

Displays sample clustering dendrograms showing how related samples are to one another. If samples do not group as expected, the differential expression you are looking for between groups may not be present. Clustering controls let you choose the distance/similarity measure and the hierarchical clustering method, and you can colour samples by an experimental variable to aid interpretation.

Inputs: an assay matrix (variable rows by default; row selection may also be “all” or a supplied gene set) and distance/clustering choices. Backed by: interactive_clustering_dendrogram.

Sample clustering dendrogram coloured by sample group
Sample clustering dendrogram coloured by sample group

Boxplots / density

Illustrates the distribution of values in each sample, as box plots (via ggplot2) or lines/density (via Plotly). A very atypical distribution in a sample, for example an unusually low mean, can point to sample-quality problems. Box plots become unmanageable beyond about 20 samples, so line plots are the default for larger sample counts. Whiskers extend to 1.5x the interquartile range by default; points beyond them are treated as outliers, and mousing over an outlier in the line plots reveals its identity.

Inputs: an assay matrix; comparing raw versus normalised matrices can be informative. Backed by: interactive_boxplot, interactive_densityplot, and interactive_quartiles.

Value distributions per sample, as box plots coloured by group
Value distributions per sample, as box plots coloured by group

Expression heatmap

A standard expression heatmap plotted interactively with heatmaply. Clustering dendrograms use a Spearman-correlation distance passed to the ward.D2 method of hclust(). Colours are scaled by row by default so trends can be compared across rows. The data can optionally be summarised into means per sample group.

Inputs: an assay matrix, with rows selectable by variance, by an explicit list, or (where gene sets are uploaded) by a predefined gene set. Backed by: interactive_heatmap.

Expression heatmap of the top variable rows, clustered and scaled by row
Expression heatmap of the top variable rows, clustered and scaled by row

Clustering profiles

Examines clustering patterns within a subset of a matrix. The matrix is re-scaled by row to give comparable profiles, and a chosen number of clusters is produced with the clara() method from the cluster package. The number of clusters is the key control, and three display modes are offered: a sample of up to 100 profiles per cluster, or summary statistics (mean or median) with error bars or a filled variability band. A per-cluster membership matrix can be exported for further investigation.

Inputs: an assay matrix (variable rows by default) and the number of clusters. Backed by: interactive_cluster_profiles.

Feature-wise clustering profiles, one panel per cluster with a filled variability band
Feature-wise clustering profiles, one panel per cluster with a filled variability band

Differential

Panels that visualise or tabulate the results of differential testing. All require contrasts with statistics (p- and q-values) in the object’s tests slot; where only a single assay carries tests, no matrix selector is shown. Fold changes are computed dynamically from the chosen assay matrix and the way group-wise averages are calculated (mean by default).

Differential table

View and download the differential statistics: p-values and adjusted p-values (computed prior to loading) alongside fold changes (computed dynamically). Controls select which contrasts to display and apply thresholds. Dynamic filters under “Contrasts” allow complex queries, combining different filter sets across contrasts by intersection (default) or union, for example “features highly significantly up in contrast A but unchanged in contrast B”.

Inputs: contrasts with test statistics; an assay matrix for fold changes.

Differential table for one contrast, with fold change and p/q columns
Differential table for one contrast, with fold change and p/q columns

Volcano plot

Plots log2 fold change (x, sign preserved) against -log10 p-value (y), drawn with Plotly. High-magnitude, low-variability changes land at the top-left and top-right extremes, the points of most interest. Points passing the fold-change and q-value thresholds are drawn in active blue with mouse-over detail; those below are inert grey (labelling every point would slow the browser).

Inputs: a contrast, fold-change and q-value thresholds, and optionally a set of genes to highlight by colour. Backed by: interactive_scatterplot.

Volcano plot for one contrast, with points passing the fold-change/q-value thresholds highlighted in blue
Volcano plot for one contrast, with points passing the fold-change/q-value thresholds highlighted in blue

MA plot

Illustrates the relationship between mean expression and fold change, overlaid with significance from a statistical test. At low expression a small absolute difference yields a large fold change that falls within normal variability and is not significant; as expression rises, smaller fold changes become significant. Same threshold and highlight controls as the volcano plot.

Inputs: a contrast, fold-change and q-value thresholds, optional highlight set. Backed by: interactive_scatterplot.

MA plot for one contrast: log2 fold change against log10 mean expression
MA plot for one contrast: log2 fold change against log10 mean expression

Fold change plot

A simple scatter plot comparing the mean expression value between two groups of samples for every row of a matrix, drawn with Plotly. Points are grey, or blue where they pass the fold-change and (where available) q-value thresholds.

Inputs: an assay matrix, a contrast, thresholds, optional highlight set. Backed by: interactive_scatterplot.

Fold change plot comparing mean expression between two groups
Fold change plot comparing mean expression between two groups

Top gene boxplots

A faceted boxplot for the most differentially expressed genes in a chosen contrast: one panel per gene, samples grouped by the contrast’s two conditions, with the gene’s q-value annotated on its panel and an optional per-sample beeswarm overlay. Genes passing the significance filters can be ranked by q-value or by (absolute) fold change ascending/descending, and the number drawn is capped by a control. A colour-blind-safe palette is the default.

Inputs: a contrast, significance thresholds, a ranking metric, a gene count, and a colour palette. Backed by: interactive_topgene_boxplots.

Top gene boxplots for a contrast, ranked by q value, with per-sample beeswarm points
Top gene boxplots for a contrast, ranked by q value, with per-sample beeswarm points

UpSet

An UpSet set-intersection plot (after Lex, Gehlenborg et al.), where the sets are gene lists derived from the supplied contrasts and filters. You can restrict the number of contrasts considered and the number of intersections shown. The intersection type defaults to exclusive (Venn/Euler-style, so bars sum to the total), or can be set to “Complete” so each bar reflects the full pairwise intersection (bars then overlap and no longer sum to the total). The plot is downloadable.

Inputs: contrasts with thresholds, and an assay matrix for generating the comparisons. Backed by: interactive_upset.

UpSet plot showing the exclusive intersections between several contrasts’ differential gene sets
UpSet plot showing the exclusive intersections between several contrasts’ differential gene sets

Gene-level

Panels centred on individual genes or gene sets.

Gene page (and gene model)

Detailed information for one or more genes selected by label or identifier. It combines an expression bar plot (expression per sample, optionally coloured by an experimental variable) with a gene info table of annotation (with links out to external resources where configured), a contrasts table listing that gene’s differential results across all defined contrasts, and, where the experiment has an associated Ensembl species, a gene model view: an interactive genome-browser diagram of the gene’s exon/transcript structure.

Inputs: one or more selected genes; an assay matrix and a “colour by” variable for the bar plot; contrasts for the results table; an Ensembl species (plus chromosome_name/start_position/end_position feature metadata) for the gene model. Backed by: interactive_scatterplot for the expression bar plot; the gene model view uses the igvShiny (igv.js) browser.

Gene page: expression bar plot, gene info and contrasts table
Gene page: expression bar plot, gene info and contrasts table

Gene-set barcode plot

An interactive barcode plot reproducing the statistics behind limma’s barcodeplot() and building on Subramanian et al. (GSEA). It shows where the members of one gene set fall in the overall list of genes ranked by fold change between two conditions; “bunching up” at one extreme indicates coordinated up- or down-regulation. The FDR is annotated where available, hovering a tick shows the gene and its fold change, and an accompanying table gives contrast detail for the set.

Inputs: a single selected gene set, a contrast, and an assay matrix (note the displayed FDR may correspond to only one of the available matrices). Backed by: interactive_barcodeplot.

Gene-set barcode plot showing where a gene set’s members fall in the ranked fold-change list
Gene-set barcode plot showing where a gene set’s members fall in the ranked fold-change list

Gene-set analysis table

A gene set analysis table, potentially produced by a variety of methods (the “Method” line names the tool, e.g. GSEA or ROAST, that generated the current results), typically showing gene sets with p-values and FDRs. Filters select a single gene-set type (e.g. KEGG) and optionally specific sets. For convenience, the significantly differential genes of the appropriate direction are annotated to each set; the default is to filter those genes only on unadjusted p-value, since selection has already been applied at the set level. Gene sets link through to the barcode plot, and individual genes to their expression bar plots.

Inputs: precomputed gene set analysis results, a gene-set type, and a contrast with gene-level thresholds.

Gene set analysis table showing ROAST results with significant genes annotated per set
Gene set analysis table showing ROAST results with significant genes annotated per set

QC / platform-specific

Panels tied to a particular assay platform or analysis method.

Illumina array QC

Plots the mean of the Illumina control probes for each sample, grouped by condition. Expected relationships to check (listed alongside the plot) include cy3_high > cy3_med > cy3_low, low stringency near zero, high stringency at or below cy3 high, housekeeping and biotin high, and negative controls near zero.

Inputs: Illumina control-probe measurements per sample. Backed by: interactive_illumina_control_probes.

Illumina control-probe QC plot across samples, one line per probe group
Illumina control-probe QC plot across samples, one line per probe group

DEXSeq plot

Visualises the output of the DEXSeq package for differential exon usage between conditions. Per exon and sample, DEXSeq considers the ratio of reads mapping to that exon versus other exons of the same gene, and how that ratio changes across conditions. Individual sub-plots can be toggled: model-derived expression per condition, exon usage coefficients, per-sample normalised counts, a gene model colouring exons pink where significant differential usage is seen, and a transcripts view for comparing usage against known transcript structures. An accompanying table gives normalised exon counts and relative exon usage per condition.

Inputs: DEXSeq results, a gene to plot, an FDR threshold for colouring exons, and which sub-plots to show.

DEXSeq plot for a gene with a significant exon usage shift between conditions, showing expression, exon usage and gene model tracks
DEXSeq plot for a gene with a significant exon usage shift between conditions, showing expression, exon usage and gene model tracks

DEXSeq table

The tabular counterpart to the DEXSeq plot: normalised exon count and relative exon usage per condition, where large usage changes appear as large fold changes and low FDR-adjusted p-values. Controls filter on fold change and adjusted p-value; by default only the single most significant differential exon per gene is shown (untick to show all).

Inputs: DEXSeq results and fold-change/FDR filters.

Read reports

Summaries of read counts, drawn as Plotly bar plots from information supplied when the resource was built. Example reports include a read attrition plot (where reads were lost across analysis stages, drawn as overlapping bars since each stage is a subset of the previous), a read distribution plot (reads by genomic feature type such as exon or intron), and a read gene-type plot (by gene biotype, e.g. protein coding or rRNA).

Inputs: precomputed read-summary tables provided with the dataset. Backed by: interactive_barchart / interactive_count_barplot.

Read attrition plot showing reads lost across analysis stages, per sample
Read attrition plot showing reads lost across analysis stages, per sample

Data tables

Panels for viewing and downloading the underlying data and metadata.

Assay data table

View and download the raw matrix data held in the assays slots. The data are organised into experiments (each with its own set of features, e.g. one for transcripts and one for genes), and each experiment holds multiple assays (measurements of the same features and samples, or different processing levels). The data can optionally be summarised into means per sample group.

Inputs: a choice of experiment and assay, plus row and column selection.

Assay data table showing a filtered normalised expression matrix
Assay data table showing a filtered normalised expression matrix

Sample metadata table

Shows the experimental information supplied alongside the primary data (used, for example, for batch correction or to define comparison groups); factors from this table colour plots elsewhere in the app. A Category counts tab counts samples by a categorical field (e.g. per treatment group), optionally split by a second field into grouped or stacked bars. Identifier-like fields (near-unique per row) are not offered for counting.

Inputs: sample (column) metadata.

Sample metadata table
Sample metadata table


Category counts for the sample metadata, split by group
Category counts for the sample metadata, split by group

Row / feature metadata table

Shows the metadata associated with each matrix row (e.g. genes or transcripts) in the selected experiment; its content depends on what was added during analysis. As with the sample table, a Category counts tab counts rows by a categorical field (e.g. genes per biotype), optionally split by a second field, excluding identifier-like fields.

Inputs: row (feature) metadata for the selected experiment.

Row/feature metadata table
Row/feature metadata table


Category counts for the feature metadata, by annotation source
Category counts for the feature metadata, by annotation source