Skip to contents

This function generates various types of plots for Gene Set Enrichment Analysis (GSEA) results.

Usage

GSEAPlot(
  srt,
  db = "GO_BP",
  group_by = NULL,
  test.use = "wilcox",
  res = NULL,
  plot_type = c("line", "bar", "network", "enrichmap", "wordcloud", "comparison"),
  group_use = NULL,
  id_use = NULL,
  pvalueCutoff = NULL,
  padjustCutoff = 0.05,
  topTerm = ifelse(plot_type == "enrichmap", 100, 6),
  direction = c("pos", "neg", "both"),
  compare_only_sig = FALSE,
  topWord = 100,
  word_type = c("term", "feature"),
  word_size = c(2, 8),
  words_excluded = NULL,
  line_width = 1.5,
  line_alpha = 1,
  line_color = "#6BB82D",
  n_coregene = 10,
  sample_coregene = FALSE,
  features_label = NULL,
  label.fg = "black",
  label.bg = "white",
  label.bg.r = 0.1,
  label.size = 4,
  network_layout = "fr",
  network_labelsize = 5,
  network_blendmode = "blend",
  network_layoutadjust = TRUE,
  network_adjscale = 60,
  network_adjiter = 100,
  enrichmap_layout = "fr",
  enrichmap_cluster = "fast_greedy",
  enrichmap_label = c("term", "feature"),
  enrichmap_labelsize = 5,
  enrlichmap_nlabel = 4,
  enrichmap_show_keyword = FALSE,
  enrichmap_mark = c("ellipse", "hull"),
  enrichmap_expand = c(0.5, 0.5),
  character_width = 50,
  lineheight = 0.5,
  palette = "Spectral",
  palcolor = NULL,
  aspect.ratio = NULL,
  legend.position = "right",
  legend.direction = "vertical",
  theme_use = "theme_scp",
  theme_args = list(),
  combine = TRUE,
  nrow = NULL,
  ncol = NULL,
  byrow = TRUE,
  seed = 11
)

Arguments

srt

A Seurat object containing the results of RunDEtest and RunGSEA. If specified, GSEA results will be extracted from the Seurat object automatically. If not specified, the res arguments must be provided.

db

The database to use for enrichment plot. Default is "GO_BP".

group_by

A character vector specifying the grouping variable in the Seurat object. This argument is only used if srt is specified.

test.use

A character vector specifying the test to be used in differential expression analysis. This argument is only used if srt is specified.

res

Enrichment results generated by RunGSEA function. If provided, 'srt', 'test.use' and 'group_by' are ignored.

plot_type

The type of plot to generate. Options are: "line", "comparison", "bar", "network", "enrichmap", "wordcloud". Default is "line".

group_use

The group(s) to be used for enrichment plot. Default is NULL.

id_use

List of IDs to be used to display specific terms in the enrichment plot. Default value is NULL.

pvalueCutoff

The p-value cutoff. Default is NULL. Only work when padjustCutoff is NULL.

padjustCutoff

The p-adjusted cutoff. Default is 0.05.

topTerm

The number of top terms to display. Default is 6, or 100 if 'plot_type' is "enrichmap".

direction

The direction of enrichment to include in the plot. Must be one of "pos", "neg", or "both". The default value is "both".

compare_only_sig

Whether to compare only significant terms. Default is FALSE.

topWord

The number of top words to display for wordcloud. Default is 100.

word_type

The type of words to display in wordcloud. Options are "term" and "feature". Default is "term".

word_size

The size range for words in wordcloud. Default is c(2, 8).

words_excluded

Words to be excluded from the wordcloud. The default value is NULL, which means that the built-in words (SCP::words_excluded) will be used.

line_width

The linewidth for the line plot.

line_alpha

The alpha value for the line plot.

line_color

The color for the line plot.

n_coregene

The number of core genes to label in the line plot.

sample_coregene

Whether to randomly sample core genes for labeling in the line plot.

features_label

A character vector of feature names to include as labels in the line plot.

label.fg

The color of the labels.

label.bg

The background color of the labels.

label.bg.r

The radius of the rounding of the label's background.

label.size

The size of the labels.

network_layout

The layout algorithm to use for network plot. Options are "fr", "kk","random", "circle", "tree", "grid", or other algorithm from 'igraph' package. Default is "fr".

network_labelsize

The label size for network plot. Default is 5.

network_blendmode

The blend mode for network plot. Default is "blend".

network_layoutadjust

Whether to adjust the layout of the network plot to avoid overlapping words. Default is TRUE.

network_adjscale

The scale for adjusting network plot layout. Default is 60.

network_adjiter

The number of iterations for adjusting network plot layout. Default is 100.

enrichmap_layout

The layout algorithm to use for enrichmap plot. Options are "fr", "kk","random", "circle", "tree", "grid", or other algorithm from 'igraph' package. Default is "fr".

enrichmap_cluster

The clustering algorithm to use for enrichmap plot. Options are "walktrap", "fast_greedy", or other algorithm from 'igraph' package. Default is "fast_greedy".

enrichmap_label

The label type for enrichmap plot. Options are "term" and "feature". Default is "term".

enrichmap_labelsize

The label size for enrichmap plot. Default is 5.

enrlichmap_nlabel

The number of labels to display for each cluster in enrichmap plot. Default is 4.

enrichmap_show_keyword

Whether to show the keyword of terms or features in enrichmap plot. Default is FALSE.

enrichmap_mark

The mark shape for enrichmap plot. Options are "ellipse" and "hull". Default is "ellipse".

enrichmap_expand

The expansion factor for enrichmap plot. Default is c(0.5, 0.5).

character_width

The maximum width of character of descriptions. Default is 50.

lineheight

The line height for y-axis labels. Default is 0.5.

palette

The color palette to use. Default is "Spectral".

palcolor

Custom colors for palette. Default is NULL.

aspect.ratio

The aspect ratio of the plot. Default is 1.

legend.position

The position of the legend. Default is "right".

legend.direction

The direction of the legend. Default is "vertical".

theme_use

The theme to use for the plot. Default is "theme_scp".

theme_args

The arguments to pass to the theme. Default is an empty list.

combine

Whether to combine multiple plots into a single plot. Default is TRUE.

nrow

The number of rows in the combined plot. Default is NULL, calculated based on the number of plots.

ncol

The number of columns in the combined plot. Default is NULL, calculated based on the number of plots.

byrow

Whether to fill the combined plot by row. Default is TRUE.

seed

The random seed to use. Default is 11.

See also

Examples

data("pancreas_sub")
pancreas_sub <- RunDEtest(pancreas_sub, group_by = "CellType", only.pos = FALSE, fc.threshold = 1)
#> Warning: Data in the 'data' slot is raw counts. Perform NormalizeData(LogNormalize) on the data.
#> [2023-11-21 07:18:21.82373] Start DEtest
#> Workers: 2
#> Find all markers(wilcox) among 5 groups...
#> 
  |                                                                                                                    
  |                                                                                                              |   0%
#> 
#> 
#> 
  |                                                                                                                    
  |============================================                                                                  |  40%
#> 
#> 
#> 
#> 
  |                                                                                                                    
  |==============================================================================================================| 100%
#> 
#> [2023-11-21 07:21:08.176377] DEtest done
#> Elapsed time:2.77 mins
pancreas_sub <- RunGSEA(pancreas_sub, group_by = "CellType", db = "GO_BP", species = "Mus_musculus")
#> [2023-11-21 07:21:08.182191] Start GSEA
#> Workers: 2
#> Species: Mus_musculus
#> Loading cached db: GO_BP version:3.17.0 nterm:16027 created:2023-11-21 07:14:20.545084
#> Convert ID types for the database: GO_BP
#> Connect to the Ensembl archives...
#> Using the 103 version of biomart...
#> Connecting to the biomart...
#> Searching the dataset mmusculus ...
#> Connecting to the dataset mmusculus_gene_ensembl ...
#> Converting the geneIDs...
#> Error in collect(., Inf): Failed to collect lazy table.
#> Caused by error in `db_collect()`:
#> ! Arguments in `...` must be used.
#>  Problematic argument:
#>  ..1 = Inf
#>  Did you misspell an argument name?
GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal")
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal"): No enrichment result found. You may perform RunGSEA first.
GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal", id_use = "GO:0006412")
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal",     id_use = "GO:0006412"): No enrichment result found. You may perform RunGSEA first.
GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Endocrine", id_use = c("GO:0046903", "GO:0015031", "GO:0007600")) %>%
  panel_fix_overall(height = 6) # As the plot is created by combining, we can adjust the overall height and width directly.
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Endocrine",     id_use = c("GO:0046903", "GO:0015031", "GO:0007600")): No enrichment result found. You may perform RunGSEA first.

GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", topTerm = 3, plot_type = "comparison")
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", topTerm = 3,     plot_type = "comparison"): No enrichment result found. You may perform RunGSEA first.
GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", topTerm = 3, plot_type = "comparison", direction = "neg")
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", topTerm = 3,     plot_type = "comparison", direction = "neg"): No enrichment result found. You may perform RunGSEA first.
GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", topTerm = 3, plot_type = "comparison", direction = "both")
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", topTerm = 3,     plot_type = "comparison", direction = "both"): No enrichment result found. You may perform RunGSEA first.
GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", topTerm = 3, plot_type = "comparison", compare_only_sig = TRUE)
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", topTerm = 3,     plot_type = "comparison", compare_only_sig = TRUE): No enrichment result found. You may perform RunGSEA first.

GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", plot_type = "bar")
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", plot_type = "bar"): No enrichment result found. You may perform RunGSEA first.
GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", plot_type = "bar", direction = "both")
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", plot_type = "bar",     direction = "both"): No enrichment result found. You may perform RunGSEA first.
GSEAPlot(pancreas_sub,
  db = "GO_BP", group_by = "CellType", group_use = "Ductal",
  plot_type = "bar", topTerm = 20, direction = "both", palcolor = c("red3", "steelblue")
)
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal",     plot_type = "bar", topTerm = 20, direction = "both", palcolor = c("red3",         "steelblue")): No enrichment result found. You may perform RunGSEA first.

GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Endocrine", plot_type = "network")
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Endocrine",     plot_type = "network"): No enrichment result found. You may perform RunGSEA first.
GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Endocrine", plot_type = "enrichmap")
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Endocrine",     plot_type = "enrichmap"): No enrichment result found. You may perform RunGSEA first.
GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Endocrine", plot_type = "wordcloud")
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Endocrine",     plot_type = "wordcloud"): No enrichment result found. You may perform RunGSEA first.
GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Endocrine", plot_type = "wordcloud", word_type = "feature")
#> Error in GSEAPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Endocrine",     plot_type = "wordcloud", word_type = "feature"): No enrichment result found. You may perform RunGSEA first.