Generate longitudinal spaghettiplot plots of taxonomic composition
Source:R/generate_taxa_spaghettiplot_long.R
generate_taxa_spaghettiplot_long.Rd
This function generates a spaghettiplot plot for the taxonomic composition of microbiome data over time.
Usage
generate_taxa_spaghettiplot_long(
data.obj,
subject.var,
time.var,
t0.level = NULL,
ts.levels = NULL,
group.var = NULL,
strata.var = NULL,
feature.level = NULL,
feature.dat.type = c("count", "proportion", "other"),
features.plot = NULL,
top.k.plot = NULL,
top.k.func = NULL,
prev.filter = 0.01,
abund.filter = 0.01,
base.size = 16,
theme.choice = "bw",
custom.theme = NULL,
palette = NULL,
pdf = TRUE,
file.ann = NULL,
pdf.wid = 11,
pdf.hei = 8.5,
...
)
Arguments
- data.obj
A list object in a format specific to MicrobiomeStat, which can include components such as feature.tab (matrix), feature.ann (matrix), meta.dat (data.frame), tree, and feature.agg.list (list). The data.obj can be converted from other formats using several functions from the MicrobiomeStat package, including: 'mStat_convert_DGEList_to_data_obj', 'mStat_convert_DESeqDataSet_to_data_obj', 'mStat_convert_phyloseq_to_data_obj', 'mStat_convert_SummarizedExperiment_to_data_obj', 'mStat_import_qiime2_as_data_obj', 'mStat_import_mothur_as_data_obj', 'mStat_import_dada2_as_data_obj', and 'mStat_import_biom_as_data_obj'. Alternatively, users can construct their own data.obj. Note that not all components of data.obj may be required for all functions in the MicrobiomeStat package.
- subject.var
A character string defining the subject variable in meta_tab. This should be a column that contains unique subject IDs to identify each sample's subject of origin. Required for plotting individual subject lines.
- time.var
A character string defining the time variable in meta_tab. This should be a column in meta_tab that represents the time points for the longitudinal samples. Required to identify the time axis for plotting.
- t0.level
Character or numeric, baseline time point for longitudinal analysis, e.g. "week_0" or 0. Required.
- ts.levels
Character vector, names of follow-up time points, e.g. c("week_4", "week_8"). Required.
- group.var
A character string defining the grouping variable in meta_tab. This variable is used for coloring lines in the plot and faceting by group. For example, variable could be treatment group. Optional, can be set to NULL.
- strata.var
(Optional) A character string defining the stratification variable in meta_tab. This variable is used for nested faceting in the plot. For example, could be clinical strata like disease status. Optional, can be set to NULL. When set, plot will show nested facetting by strata within each feature.
- feature.level
The column name(s) in the feature annotation matrix (feature.ann) of data.obj to use for summarization and plotting. Can be taxonomic levels like "Phylum", "Genus", or any other annotation columns like "OTU_ID". Should be a character vector specifying one or more column names in feature.ann. The special value "original" can also be provided, which will use the original row names from feature.ann. Multiple columns can be provided, and data will be plotted separately for each column. **Cannot be NULL, as NULL value will lead to errors.**
- feature.dat.type
The type of the feature data, which determines how the data is handled in downstream analyses. Should be one of: - "count": Raw count data, will be normalized by the function. - "proportion": Data that has already been normalized to proportions/percentages. - "other": Custom abundance data that has unknown scaling. No normalization applied. The choice affects preprocessing steps as well as plot axis labels. Default is "count", which assumes raw OTU table input.
- features.plot
A character vector specifying which feature IDs (e.g. OTU IDs) to plot. Default is NULL, in which case features will be selected based on `top.k.plot` and `top.k.func`.
- top.k.plot
Integer specifying number of top k features to plot, when `features.plot` is NULL. Default is NULL, in which case all features passing filters will be plotted.
- top.k.func
Function to use for selecting top k features, when `features.plot` is NULL. Options include inbuilt functions like "mean", "sd", or a custom function. Default is NULL, in which case features will be selected by abundance.
- prev.filter
Numeric value specifying the minimum prevalence threshold for filtering taxa before analysis. Taxa with prevalence below this value will be removed. Prevalence is calculated as the proportion of samples where the taxon is present. Default 0 removes no taxa by prevalence filtering.
- abund.filter
Numeric value specifying the minimum abundance threshold for filtering taxa before analysis. Taxa with mean abundance below this value will be removed. Abundance refers to counts or proportions depending on
feature.dat.type
. Default 0 removes no taxa by abundance filtering.- base.size
Base font size for the generated plots.
- theme.choice
Plot theme choice. Specifies the visual style of the plot. Can be one of the following pre-defined themes: - "prism": Utilizes the ggprism::theme_prism() function from the ggprism package, offering a polished and visually appealing style. - "classic": Applies theme_classic() from ggplot2, providing a clean and traditional look with minimal styling. - "gray": Uses theme_gray() from ggplot2, which offers a simple and modern look with a light gray background. - "bw": Employs theme_bw() from ggplot2, creating a classic black and white plot, ideal for formal publications and situations where color is best minimized. - "light": Implements theme_light() from ggplot2, featuring a light theme with subtle grey lines and axes, suitable for a fresh, modern look. - "dark": Uses theme_dark() from ggplot2, offering a dark background, ideal for presentations or situations where a high-contrast theme is desired. - "minimal": Applies theme_minimal() from ggplot2, providing a minimalist theme with the least amount of background annotations and colors. - "void": Employs theme_void() from ggplot2, creating a blank canvas with no axes, gridlines, or background, ideal for custom, creative plots. Each theme option adjusts various elements like background color, grid lines, and font styles to match the specified aesthetic. Default is "bw", offering a universally compatible black and white theme suitable for a wide range of applications.
- custom.theme
A custom ggplot theme provided as a ggplot2 theme object. This allows users to override the default theme and provide their own theme for plotting. Custom themes are useful for creating publication-ready figures with specific formatting requirements.
To use a custom theme, create a theme object with ggplot2::theme(), including any desired customizations. Common customizations for publication-ready figures might include adjusting text size for readability, altering line sizes for clarity, and repositioning or formatting the legend. For example:
“`r my_theme <- ggplot2::theme( axis.title = ggplot2::element_text(size=14, face="bold"), # Bold axis titles with larger font axis.text = ggplot2::element_text(size=12), # Slightly larger axis text legend.position = "top", # Move legend to the top legend.background = ggplot2::element_rect(fill="lightgray"), # Light gray background for legend panel.background = ggplot2::element_rect(fill="white", colour="black"), # White panel background with black border panel.grid.major = ggplot2::element_line(colour = "grey90"), # Lighter color for major grid lines panel.grid.minor = ggplot2::element_blank(), # Remove minor grid lines plot.title = ggplot2::element_text(size=16, hjust=0.5) # Centered plot title with larger font ) “`
Then pass `my_theme` to `custom.theme`. If `custom.theme` is NULL (the default), the theme is determined by `theme.choice`. This flexibility allows for both easy theme selection for general use and detailed customization for specific presentation or publication needs.
- palette
An optional parameter specifying the color palette to be used for the plot. It can be either a character string specifying the name of a predefined palette or a vector of color codes in a format accepted by ggplot2 (e.g., hexadecimal color codes). Available predefined palettes include 'npg', 'aaas', 'nejm', 'lancet', 'jama', 'jco', and 'ucscgb', inspired by various scientific publications and the `ggsci` package. If `palette` is not provided or an unrecognized palette name is given, a default color palette will be used. Ensure the number of colors in the palette is at least as large as the number of groups being plotted.
A logical value. If TRUE (default), saves the plot as a PDF file. If FALSE, the plot will be displayed interactively without creating a PDF.
- file.ann
(Optional) A character string specifying a file annotation to include in the generated PDF file's name.
- pdf.wid
Width of the PDF plots.
- pdf.hei
Height of the PDF plots.
- ...
Additional parameters to be passed.
Examples
if (FALSE) { # \dontrun{
data(ecam.obj)
generate_taxa_spaghettiplot_long(
data.obj = ecam.obj,
subject.var = "studyid",
time.var = "month_num",
t0.level = NULL,
ts.levels = NULL,
group.var = "diet",
strata.var = "antiexposedall",
feature.level = c("Genus"),
features.plot = NULL,
feature.dat.type = "proportion",
top.k.plot = 10,
top.k.func = "mean",
prev.filter = 0,
abund.filter = 0,
base.size = 16,
theme.choice = "bw",
palette = "lancet",
pdf = TRUE,
file.ann = NULL
)
data("subset_T2D.obj")
generate_taxa_spaghettiplot_long(
data.obj = subset_T2D.obj,
subject.var = "subject_id",
time.var = "visit_number_num",
t0.level = NULL,
ts.levels = NULL,
group.var = "subject_race",
strata.var = "sample_body_site",
feature.level = c("Genus"),
features.plot = NULL,
feature.dat.type = "count",
top.k.plot = 10,
top.k.func = "mean",
prev.filter = 0,
abund.filter = 0,
base.size = 16,
theme.choice = "bw",
palette = "npg",
pdf = TRUE,
file.ann = NULL
)
} # }