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.7,
  palette = "Spectral",
  palcolor = NULL,
  aspect.ratio = 1,
  legend.position = "right",
  legend.direction = "vertical",
  theme_use = "theme_scop",
  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. Only work when padjustCutoff is NULL. Default 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. Default is NULL, which means that the built-in words (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.7.

palette

Color palette name. Available palettes can be found in thisplot::show_palettes. Default is "Spectral".

palcolor

Custom colors used to create a color palette. Default is NULL.

aspect.ratio

Aspect ratio of the panel. Default is 1.

legend.position

The position of legends, one of "none", "left", "right", "bottom", "top". Default is "right".

legend.direction

The direction of the legend in the plot. Can be one of "vertical" or "horizontal".

theme_use

Theme used. Can be a character string or a theme function. Default is "theme_scop".

theme_args

Other arguments passed to the theme_use. Default is list().

combine

Combine plots into a single patchwork object. If FALSE, return a list of ggplot objects.

nrow

Number of rows in the combined plot. Default is NULL, which means determined automatically based on the number of plots.

ncol

Number of columns in the combined plot. Default is NULL, which means determined automatically based on the number of plots.

byrow

Whether to arrange the plots by row in the combined plot. Default is TRUE.

seed

Random seed for reproducibility. Default is 11.

See also

Examples

if (FALSE) { # \dontrun{
data(pancreas_sub)
pancreas_sub <- standard_scop(pancreas_sub)
pancreas_sub <- RunDEtest(
  pancreas_sub,
  group.by = "CellType"
)

pancreas_sub <- RunEnrichment(
  pancreas_sub,
  db = c("GO_BP", "GO_CC"),
  group.by = "CellType",
  species = "Mus_musculus"
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  group_use = "Ductal",
  plot_type = "bar"
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  plot_type = "bar",
  color_by = "Groups",
  ncol = 2
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  plot_type = "bar",
  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"
    )
  )
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  topTerm = 3,
  plot_type = "comparison"
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  topTerm = 3,
  plot_type = "comparison",
  compare_only_sig = TRUE
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  group_use = c("Ductal", "Endocrine"),
  plot_type = "comparison"
)

EnrichmentPlot(
  pancreas_sub,
  db = c("GO_BP", "GO_CC"),
  group.by = "CellType",
  group_use = c("Ductal", "Endocrine"),
  plot_type = "bar",
  split_by = "Groups"
)

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

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

EnrichmentPlot(
  pancreas_sub,
  db = c("GO_BP", "GO_CC"),
  group.by = "CellType",
  plot_type = "bar",
  split_by = "Database",
  color_by = "Groups",
  palette = "Set1"
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  group_use = "Ductal",
  plot_type = "dot",
  palette = "GdRd"
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  group_use = "Ductal",
  plot_type = "lollipop",
  palette = "GdRd"
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  group_use = "Ductal",
  plot_type = "wordcloud"
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  group_use = "Ductal",
  plot_type = "wordcloud",
  word_type = "feature"
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  group_use = "Ductal",
  plot_type = "network"
)

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

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  group_use = "Ductal",
  plot_type = "network",
  network_layoutadjust = FALSE
)

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)
) |> thisplot::panel_fix(height = 5)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  group_use = "Ductal",
  plot_type = "enrichmap"
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  group_use = "Ductal",
  plot_type = "enrichmap",
  enrichmap_expand = c(2, 1)
)

EnrichmentPlot(
  pancreas_sub,
  db = "GO_BP",
  group.by = "CellType",
  group_use = "Ductal",
  plot_type = "enrichmap",
  enrichmap_show_keyword = TRUE,
  character_width = 10
)

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)
) |> thisplot::panel_fix(height = 4)

pancreas_sub <- RunEnrichment(
  pancreas_sub,
  db = c("MP", "DO"),
  group.by = "CellType",
  convert_species = TRUE,
  species = "Mus_musculus"
)

EnrichmentPlot(
  pancreas_sub,
  db = c("MP", "DO"),
  group.by = "CellType",
  group_use = "Ductal",
  ncol = 1
)
} # }