Skip to contents

This function generates various types of plots for enrichment (over-representation) analysis.

Usage

EnrichmentPlot(
  srt,
  db = "GO_BP",
  group_by = NULL,
  test.use = "wilcox",
  res = NULL,
  plot_type = c("bar", "dot", "lollipop", "network", "enrichmap", "wordcloud",
    "comparison"),
  split_by = c("Database", "Groups"),
  color_by = "Database",
  group_use = NULL,
  id_use = NULL,
  pvalueCutoff = NULL,
  padjustCutoff = 0.05,
  topTerm = ifelse(plot_type == "enrichmap", 100, 6),
  compare_only_sig = FALSE,
  topWord = 100,
  word_type = c("term", "feature"),
  word_size = c(2, 8),
  words_excluded = NULL,
  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 = 1,
  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 RunEnrichment. If specified, enrichment 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 RunEnrichment function. If provided, 'srt', 'test.use' and 'group_by' are ignored.

plot_type

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

split_by

The splitting variable(s) for the plot. Can be "Database", "Groups", or both. Default is c("Database", "Groups") for plots.

color_by

The variable used for coloring. Default is "Database".

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".

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.

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")
#> Warning: Data in the 'data' slot is raw counts. Perform NormalizeData(LogNormalize) on the data.
#> [2023-11-21 07:13:19.485699] Start DEtest
#> Workers: 2
#> Find all markers(wilcox) among 5 groups...
#> 
  |                                                                                                                    
  |                                                                                                              |   0%
#> 
#> 
#> 
  |                                                                                                                    
  |============================================                                                                  |  40%
#> 
#> 
#> 
#> 
  |                                                                                                                    
  |==============================================================================================================| 100%
#> 
#> [2023-11-21 07:13:30.012413] DEtest done
#> Elapsed time:10.53 secs
pancreas_sub <- RunEnrichment(srt = pancreas_sub, db = c("GO_BP", "GO_CC"), group_by = "CellType", species = "Mus_musculus")
#> [2023-11-21 07:13:30.016153] Start Enrichment
#> Workers: 2
#> Species: Mus_musculus
#> Loading cached db: GO_BP version:3.17.0 nterm:16027 created:2023-11-21 07:12:49.800522
#> Preparing database: GO_BP
#> Preparing database: GO_CC
#> 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?
EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "bar")
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "bar"): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub,
  db = "GO_BP", group_by = "CellType", group_use = "Endocrine",
  plot_type = "bar", character_width = 30,
  theme_use = ggplot2::theme_classic, theme_args = list(base_size = 10)
)
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Endocrine", plot_type = "bar", character_width = 30,     theme_use = ggplot2::theme_classic, theme_args = list(base_size = 10)): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", plot_type = "bar", color_by = "Groups", ncol = 2)
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     plot_type = "bar", color_by = "Groups", ncol = 2): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub,
  db = "GO_BP", group_by = "CellType", plot_type = "bar",
  split_by = "Database", color_by = "Groups", palette = "Set1",
  id_use = list(
    "Ductal" = c("GO:0002181", "GO:0045787", "GO:0006260", "GO:0050679"),
    "Ngn3 low EP" = c("GO:0050678", "GO:0051101", "GO:0072091", "GO:0006631"),
    "Ngn3 high EP" = c("GO:0035270", "GO:0030325", "GO:0008637", "GO:0030856"),
    "Pre-endocrine" = c("GO:0090276", "GO:0031018", "GO:0030073", "GO:1903532"),
    "Endocrine" = c("GO:0009914", "GO:0030073", "GO:0009743", "GO:0042593")
  )
)
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     plot_type = "bar", split_by = "Database", color_by = "Groups",     palette = "Set1", id_use = list(Ductal = c("GO:0002181",         "GO:0045787", "GO:0006260", "GO:0050679"), `Ngn3 low EP` = c("GO:0050678",         "GO:0051101", "GO:0072091", "GO:0006631"), `Ngn3 high EP` = c("GO:0035270",         "GO:0030325", "GO:0008637", "GO:0030856"), `Pre-endocrine` = c("GO:0090276",         "GO:0031018", "GO:0030073", "GO:1903532"), Endocrine = c("GO:0009914",         "GO:0030073", "GO:0009743", "GO:0042593"))): No enrichment result found. You may perform RunEnrichment first.

EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", topTerm = 3, plot_type = "comparison")
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     topTerm = 3, plot_type = "comparison"): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", topTerm = 3, plot_type = "comparison", compare_only_sig = TRUE)
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     topTerm = 3, plot_type = "comparison", compare_only_sig = TRUE): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = c("Ductal", "Endocrine"), plot_type = "comparison")
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = c("Ductal", "Endocrine"), plot_type = "comparison"): No enrichment result found. You may perform RunEnrichment first.

EnrichmentPlot(pancreas_sub,
  db = c("GO_BP", "GO_CC"), group_by = "CellType", group_use = c("Ductal", "Endocrine"), plot_type = "bar",
  split_by = "Groups"
)
#> Error in EnrichmentPlot(pancreas_sub, db = c("GO_BP", "GO_CC"), group_by = "CellType",     group_use = c("Ductal", "Endocrine"), plot_type = "bar",     split_by = "Groups"): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub,
  db = c("GO_BP", "GO_CC"), group_by = "CellType", group_use = c("Ductal", "Endocrine"), plot_type = "bar",
  split_by = "Database", color_by = "Groups",
)
#> Error in EnrichmentPlot(pancreas_sub, db = c("GO_BP", "GO_CC"), group_by = "CellType",     group_use = c("Ductal", "Endocrine"), plot_type = "bar",     split_by = "Database", color_by = "Groups", ): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub,
  db = c("GO_BP", "GO_CC"), group_by = "CellType", group_use = c("Ductal", "Endocrine"), plot_type = "bar",
  split_by = c("Database", "Groups")
)
#> Error in EnrichmentPlot(pancreas_sub, db = c("GO_BP", "GO_CC"), group_by = "CellType",     group_use = c("Ductal", "Endocrine"), plot_type = "bar",     split_by = c("Database", "Groups")): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub,
  db = c("GO_BP", "GO_CC"), group_by = "CellType", group_use = c("Ductal", "Endocrine"), plot_type = "bar",
  split_by = c("Groups", "Database")
)
#> Error in EnrichmentPlot(pancreas_sub, db = c("GO_BP", "GO_CC"), group_by = "CellType",     group_use = c("Ductal", "Endocrine"), plot_type = "bar",     split_by = c("Groups", "Database")): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub,
  db = c("GO_BP", "GO_CC"), group_by = "CellType", plot_type = "bar",
  split_by = "Database", color_by = "Groups", palette = "Set1"
)
#> Error in EnrichmentPlot(pancreas_sub, db = c("GO_BP", "GO_CC"), group_by = "CellType",     plot_type = "bar", split_by = "Database", color_by = "Groups",     palette = "Set1"): No enrichment result found. You may perform RunEnrichment first.

EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "dot", palette = "GdRd")
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "dot", palette = "GdRd"): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "lollipop", palette = "GdRd")
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "lollipop", palette = "GdRd"): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "wordcloud")
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "wordcloud"): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "wordcloud", word_type = "feature")
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "wordcloud", word_type = "feature"): No enrichment result found. You may perform RunEnrichment first.

EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "network")
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "network"): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "network", id_use = c("GO:0050678", "GO:0035270", "GO:0090276", "GO:0030073"))
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "network", id_use = c("GO:0050678",         "GO:0035270", "GO:0090276", "GO:0030073")): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "network", network_layoutadjust = FALSE)
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "network", network_layoutadjust = FALSE): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub,
  db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "network",
  topTerm = 4, network_blendmode = "average",
  theme_use = "theme_blank", theme_args = list(add_coord = FALSE)
) %>% panel_fix(height = 5)
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "network", topTerm = 4,     network_blendmode = "average", theme_use = "theme_blank",     theme_args = list(add_coord = FALSE)): No enrichment result found. You may perform RunEnrichment first.

EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "enrichmap")
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "enrichmap"): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "enrichmap", enrichmap_expand = c(2, 1))
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "enrichmap", enrichmap_expand = c(2,         1)): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub,
  db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "enrichmap",
  enrichmap_show_keyword = TRUE, character_width = 10
)
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "enrichmap", enrichmap_show_keyword = TRUE,     character_width = 10): No enrichment result found. You may perform RunEnrichment first.
EnrichmentPlot(pancreas_sub,
  db = "GO_BP", group_by = "CellType", group_use = "Ductal", plot_type = "enrichmap",
  topTerm = 200, enrichmap_mark = "hull", enrichmap_label = "feature", enrlichmap_nlabel = 3, character_width = 10,
  theme_use = "theme_blank", theme_args = list(add_coord = FALSE)
) %>% panel_fix(height = 4)
#> Error in EnrichmentPlot(pancreas_sub, db = "GO_BP", group_by = "CellType",     group_use = "Ductal", plot_type = "enrichmap", topTerm = 200,     enrichmap_mark = "hull", enrichmap_label = "feature", enrlichmap_nlabel = 3,     character_width = 10, theme_use = "theme_blank", theme_args = list(add_coord = FALSE)): No enrichment result found. You may perform RunEnrichment first.

pancreas_sub <- RunEnrichment(srt = pancreas_sub, db = c("MP", "DO"), group_by = "CellType", convert_species = TRUE, species = "Mus_musculus")
#> [2023-11-21 07:14:27.071083] Start Enrichment
#> Workers: 2
#> Species: Mus_musculus
#> Preparing database: MP
#> Preparing database: DO
#> Permform enrichment...
#> 
  |                                                                                                                    
  |                                                                                                              |   0%
  |                                                                                                                    
  |=======================================================                                                       |  50%
  |                                                                                                                    
  |==============================================================================================================| 100%
#> 
#> [2023-11-21 07:14:51.88477] Enrichment done
#> Elapsed time:24.81 secs
EnrichmentPlot(pancreas_sub, db = c("MP", "DO"), group_by = "CellType", group_use = "Endocrine", ncol = 1)