Skip to contents

Plot multi-dimensional scaling plot using algorithm of limma::plotMDS(). It is recommended this be done with the log-methylation-ratio matrix generated by bsseq_to_log_methy_ratio().

Usage

plot_mds(
  x,
  top = 500,
  plot_dims = c(1, 2),
  labels = colnames(x),
  groups = NULL,
  legend_name = "group"
)

Arguments

x

a numeric matrix of log-methylation-ratio values where rows are genomic regions/features and columns are samples.

top

the number of top variable features (genes/regions) used to calculate pairwise distances between samples.

plot_dims

the numeric vector of the two dimensions to be plotted (default c(1, 2) for first two principal coordinates).

labels

the character vector of labels for data points. By default uses column names of x, set to NULL to plot unlabeled points.

groups

the character vector or numeric vector of groups that data points will be coloured by. For character vectors, discrete colours are used. For numeric vectors, continuous colour scale is used. By default, groups is NULL and points are not coloured.

legend_name

the name for the colour legend.

Value

ggplot object of the MDS plot.

Details

Multi-dimensional scaling (MDS) is a dimensionality reduction technique that represents high-dimensional distances between samples in a lower-dimensional space (typically 2D). This function uses limma's plotMDS algorithm, which selects the most variable features and calculates leading log-fold-change distances between samples. The resulting plot shows samples as points where proximity indicates similarity in methylation profiles. When variance explained is available, it is shown as percentages on the axis labels.

Examples

nmr <- load_example_nanomethresult()
#> Successfully matched 6 samples between data and annotation.
bss <- methy_to_bsseq(nmr)
#> [2025-08-11 04:11:52] creating intermediate files...
#> [2025-08-11 04:11:52] parsing chr11...
#> [2025-08-11 04:11:52] parsing chr12...
#> [2025-08-11 04:11:52] parsing chr18...
#> [2025-08-11 04:11:52] parsing chr5...
#> [2025-08-11 04:11:52] parsing chr7...
#> [2025-08-11 04:11:52] parsing chrX...
#> [2025-08-11 04:11:52] samples found: B6Cast_Prom_3_cast B6Cast_Prom_3_bl6 B6Cast_Prom_2_cast B6Cast_Prom_2_bl6 B6Cast_Prom_1_cast B6Cast_Prom_1_bl6 
#> [2025-08-11 04:11:52] creating bsseq object...
#> [2025-08-11 04:11:52] reading in parsed data...
#> [2025-08-11 04:11:52] constructing matrices...
#> [2025-08-11 04:11:52] done
lmr <- bsseq_to_log_methy_ratio(bss)
plot_mds(lmr)