Based on the stored data in a TreeSummarizedExperiment a tree can be plotted. From the rowData, the assays as well as the colData information can be taken for enriching the tree plots with additional information.

plotRowTree(x, ...)

plotColTree(x, ...)

# S4 method for class 'TreeSummarizedExperiment'
plotColTree(
  x,
  tree.name = tree_name,
  tree_name = "phylo",
  relabel.tree = relabel_tree,
  relabel_tree = FALSE,
  order.tree = order_tree,
  order_tree = FALSE,
  levels.rm = remove_levels,
  remove_levels = FALSE,
  show.label = show_label,
  show_label = FALSE,
  show.highlights = show_highlights,
  show_highlights = FALSE,
  show.highlight.label = show_highlight_label,
  show_highlight_label = FALSE,
  abbr.label = abbr_label,
  abbr_label = FALSE,
  add.legend = add_legend,
  add_legend = TRUE,
  layout = "circular",
  edge.colour.by = edge.colour.by,
  edge_colour_by = NULL,
  edge.size.by = edge_size_by,
  edge_size_by = NULL,
  tip.colour.by = tip_colour_by,
  tip_colour_by = NULL,
  tip.shape.by = tip_shape_by,
  tip_shape_by = NULL,
  tip.size.by = tip_size_by,
  tip_size_by = NULL,
  node.colour.by = node_colour_by,
  node_colour_by = NULL,
  node.shape.by = node_shape_by,
  node_shape_by = NULL,
  node.size.by = node_size_by,
  node_size_by = NULL,
  colour.highlights.by = colour_highlights_by,
  colour_highlights_by = NULL,
  assay.type = by_exprs_values,
  by_exprs_values = "counts",
  other.fields = other_fields,
  other_fields = list(),
  ...
)

# S4 method for class 'TreeSummarizedExperiment'
plotRowTree(
  x,
  tree.name = tree_name,
  tree_name = "phylo",
  relabel.tree = relabel_tree,
  relabel_tree = FALSE,
  order.tree = order_tree,
  order_tree = FALSE,
  levels.rm = remove_levels,
  remove_levels = FALSE,
  show.label = show_label,
  show_label = FALSE,
  show.highlights = show_highlights,
  show_highlights = FALSE,
  show.highlight.label = show_highlight_label,
  show_highlight_label = FALSE,
  abbr.label = abbr_label,
  abbr_label = FALSE,
  add.legend = add_legend,
  add_legend = TRUE,
  layout = "circular",
  edge.colour.by = edge_colour_by,
  edge_colour_by = NULL,
  edge.size.by = edge_size_by,
  edge_size_by = NULL,
  tip.colour.by = tip_colour_by,
  tip_colour_by = NULL,
  tip.shape.by = tip_shape_by,
  tip_shape_by = NULL,
  tip.size.by = tip_size_by,
  tip_size_by = NULL,
  node.colour.by = node_colour_by,
  node_colour_by = NULL,
  node.shape.by = node_shape_by,
  node_shape_by = NULL,
  node.size.by = node_size_by,
  node_size_by = NULL,
  colour.highlights.by = colour_highlights_by,
  colour_highlights_by = NULL,
  assay.type = by_exprs_values,
  by_exprs_values = "counts",
  other.fields = other_fields,
  other_fields = list(),
  ...
)

Arguments

x

a TreeSummarizedExperiment x.

...

additional arguments for plotting. See mia-plot-args for more details i.e. call help("mia-plot-args")

tree.name

Character scalar. Specifies a rowTree/colTree from x. (Default: tree.name = "phylo")

tree_name

Deprecated. Use tree.name instead.

relabel.tree

Logical scalar. Should the tip labels be relabeled using the output of getTaxonomyLabels(x, with_rank = TRUE)? (Default: FALSE)

relabel_tree

Deprecated. Use relavel.tree instead.

order.tree

Logical scalar. Should the tree be ordered based on alphabetic order of taxonomic levels? (Default: FALSE)

order_tree

Deprecated. Use order.tree instead.

levels.rm

Logical scalar. Should taxonomic level information be removed from labels? (Default: FALSE)

remove_levels

Deprecated. Use levels.rm instead.

show.label, show.highlights, show.highlight.label, abbr.label

logical (scalar), integer or character vector. If a logical scalar is given, should tip labels be plotted or if a logical vector is provided, which labels should be shown? If an integer or character vector is provided, it will be converted to a logical vector. The integer values must be in the range of 1 and number of nodes, whereas the values of a character vector must match values of the label column in the node data. In case of a character vector only values corresponding to actual labels will be plotted and if no labels are provided no labels will be shown. (default: FALSE)

show_label, show_highlights, show_highlight_label, abbr_label

Deprecated. Use show.label, show.highlights, show.highlight.label, abbr_label instead.

add.legend

Logical scalar. Should legends be plotted? (Default: TRUE)

add_legend

Deprecated. Use add.legend instead.

layout

layout for the plotted tree. See ggtree for details.

edge.colour.by

Character scalar. Specification of a column metadata field or a feature to colour tree edges by, see the by argument in ?retrieveCellInfo for possible values.

edge_colour_by

Deprecated. Use edge.colour.by instead.

edge.size.by

Character scalar. Specification of a column metadata field or a feature to size tree edges by, see the by argument in ?retrieveCellInfo for possible values. (Default: NULL)

edge_size_by

Deprecated. Use edge.size.by instead.

tip.colour.by

Character scalar. Specification of a column metadata field or a feature to colour tree tips by, see the by argument in ?retrieveCellInfo for possible values. (Default: NULL)

tip_colour_by

Deprecated. Use tip.colour.by instead.

tip.shape.by

Character scalar. Specification of a column metadata field or a feature to shape tree tips by, see the by argument in ?retrieveCellInfo for possible values. (Default: NULL)

tip_shape_by

Deprecated. Use tip.shape.by isntead.

tip.size.by

Character scalar. Specification of a column metadata field or a feature to size tree tips by, see the by argument in ?retrieveCellInfo for possible values. (Default: NULL)

tip_size_by

Deprecated. Use tip.size.by instead.

node.colour.by

Character scalar. Specification of a column metadata field or a feature to colour tree nodes by. Must be a field from other.fields. (Default: NULL)

node_colour_by

Deprecated. Use node.colour.by instead.

node.shape.by

Character scalar. Specification of a column metadata field or a feature to shape tree nodes by. Must be a field from other.fields. (Default: NULL)

node_shape_by

Deprecated. Use node.shape.by instead.

node.size.by

Character scalar. Specification of a column metadata field or a feature to size tree nodes by. Must be a field from other.fields. (Default: NULL)

node_size_by

Deprecated. Use node.size.by instead.

colour.highlights.by

Logical scalar. Should the highlights be colour differently? If show.highlights = TRUE, colour_highlights will be set to TRUE as default. (Default: FALSE)

colour_highlights_by

Deprecated. Use colour.highlights.by instead.

assay.type

Character scalar. or integer scalar. Specifies which assay to obtain expression values from, for use in point aesthetics - see the exprs_values argument in ?retrieveCellInfo. (Default: "counts")

by_exprs_values

Deprecated. Use assay.type instead.

other.fields

Character vector. Additional fields to include in the node information without plotting them. (Default: list())

other_fields

Deprecated. Use other.fields instead.

Value

a ggtree plot

Details

If show.label or show.highlight.label have the same length as the number of nodes, the vector will be used to relabel the nodes.

Examples

library(scater)
library(mia)
# preparation of some data
data(GlobalPatterns)
GlobalPatterns <- agglomerateByRanks(GlobalPatterns)
altExp(GlobalPatterns,"Genus") <- addPerFeatureQC(altExp(GlobalPatterns,"Genus"))
rowData(altExp(GlobalPatterns,"Genus"))$log_mean <-
  log(rowData(altExp(GlobalPatterns,"Genus"))$mean)
rowData(altExp(GlobalPatterns,"Genus"))$detected <-
   rowData(altExp(GlobalPatterns,"Genus"))$detected / 100
top_genus <- getTop(altExp(GlobalPatterns,"Genus"),
                        method="mean",
                        top=100L,
                        assay.type="counts")
#
x <- altExp(GlobalPatterns,"Genus")
plotRowTree(x[rownames(x) %in% top_genus,],
            tip.colour.by = "log_mean",
            tip.size.by = "detected")


# plot with tip labels
plotRowTree(x[rownames(x) %in% top_genus,],
            tip.colour.by = "log_mean",
            tip.size.by = "detected",
            show.label = TRUE)

# plot with selected labels
labels <- c("Genus:Providencia", "Genus:Morganella", "0.961.60")
plotRowTree(x[rownames(x) %in% top_genus,],
            tip.colour.by = "log_mean",
            tip.size.by = "detected",
            show.label = labels,
            layout="rectangular")


# plot with labeled edges
plotRowTree(x[rownames(x) %in% top_genus,],
            edge.colour.by = "Phylum",
            tip.colour.by = "log_mean")

# if edges are sized, colours might disappear depending on plotting device
plotRowTree(x[rownames(x) %in% top_genus,],
            edge.colour.by = "Phylum",
            edge.size.by = "detected",
            tip.colour.by = "log_mean")


# aggregating data over the taxonomic levels for plotting a taxonomic tree
# please note that the original tree of GlobalPatterns is dropped by
# unsplitByRanks
altExps(GlobalPatterns) <- splitByRanks(GlobalPatterns)
top_phyla <- getTop(altExp(GlobalPatterns,"Phylum"),
                        method="mean",
                        top=10L,
                        assay.type="counts")
altExps(GlobalPatterns) <- lapply(altExps(GlobalPatterns), addPerFeatureQC)
altExps(GlobalPatterns) <-
   lapply(altExps(GlobalPatterns),
          function(y){
              rowData(y)$log_mean <- log(rowData(y)$mean)
              rowData(y)$detected <- rowData(y)$detected / 100
              y
          })
x <- unsplitByRanks(GlobalPatterns)
x <- addHierarchyTree(x)
#> Warning: The root is added with label 'ALL'

highlights <- c("Phylum:Firmicutes","Phylum:Bacteroidetes",
                "Family:Pseudomonadaceae","Order:Bifidobacteriales")
plotRowTree(x[rowData(x)$Phylum %in% top_phyla,],
            tip.colour.by = "log_mean",
            node.colour.by = "log_mean",
            show.highlights = highlights,
            show.highlight.label = highlights,
            colour.highlights.by = "Phylum")


plotRowTree(x[rowData(x)$Phylum %in% top_phyla,],
            edge.colour.by = "Phylum",
            edge.size.by = "detected",
            tip.colour.by = "log_mean",
            node.colour.by = "log_mean")