plotGraph {miaViz} | R Documentation

## Plotting igraph objects with information from a `SummarizedExperiment`

### Description

`plotGraph` plots an `igraph` object with additional information matched from a `SummarizedExperiment` object for the nodes only. Information on the edges have to provided manually.

### Usage

    plotColGraph(x, y, ...)

    plotRowGraph(x, y, ...)

    ## S4 method for signature 'ANY,SummarizedExperiment'
    plotColGraph(
      x,
      y,
      show_label = FALSE,
      add_legend = TRUE,
      layout = "kk",
      edge_type = c("fan", "link", "arc", "parallel"),
      edge_colour_by = NULL,
      edge_width_by = NULL,
      colour_by = NULL,
      shape_by = NULL,
      size_by = NULL,
      by_exprs_values = "counts",
      other_fields = list(),
      ...
    )

    ## S4 method for signature 'SummarizedExperiment,missing'
    plotColGraph(x, y, name = "graph", ...)

    ## S4 method for signature 'ANY,SummarizedExperiment'
    plotRowGraph(
      x,
      y,
      show_label = FALSE,
      add_legend = TRUE,
      layout = "kk",
      edge_type = c("fan", "link", "arc", "parallel"),
      edge_colour_by = NULL,
      edge_width_by = NULL,
      colour_by = NULL,
      shape_by = NULL,
      size_by = NULL,
      by_exprs_values = "counts",
      other_fields = list(),
      ...
    )

    ## S4 method for signature 'SummarizedExperiment,missing'
    plotRowGraph(x, y, name = "graph", ...)

### Arguments

`x, y` | a graph object and a `SummarizedExperiment` object or just a `SummarizedExperiment`. For the latter object a graph object must be stored in `metadata(x)$name`.
`...` | additional arguments for plotting. See `mia-plot-args` for more details i.e. call `help("mia-plot-args")`
`show_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 a `label` or `name` 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: `show_label = FALSE`)
`add_legend` | logical scalar. Should legends be plotted? (default: `add_legend = TRUE`)
`layout` | layout for the plotted graph. See `ggraph` for details. (default: `layout = "kk"`)
`edge_type` | type of edge plotted on the graph. See `geom_edge_fan` for details and other available geoms. (default: `edge_type = "fan"`)
`edge_colour_by` | Specification of a edge metadata field to use for setting colours of the edges.
`edge_width_by` | Specification of a edge metadata field to use for setting width of the edges.
`colour_by` | Specification of a column metadata field or a feature to colour graph nodes by, see the by argument in `?retrieveCellInfo` for possible values.
`shape_by` | Specification of a column metadata field or a feature to shape graph nodes by, see the by argument in `?retrieveCellInfo` for possible values.
`size_by` | Specification of a column metadata field or a feature to size graph nodes by, see the by argument in `?retrieveCellInfo` for possible values.
`by_exprs_values` | A string or integer scalar specifying which assay to obtain expression values from, for use in point aesthetics - see the `exprs_values` argument in `?retrieveCellInfo`.
`other_fields` | Additional fields to include in the node information without plotting them.
`name` | If `x` is a `SummarizedExperiment` the key for subsetting the `metadata(x)` to a graph object.

### Details

: Internally `tidygraph` and `ggraph` are used. Therefore, all graph types which can be converted by `tidygraph::as_tbl_graph` can be used.

### Value

a `ggtree` plot

### Examples

    # data setup
    library(mia)
    data(GlobalPatterns)
    data(col_graph)
    data(row_graph)
    data(row_graph_order)
    metadata(GlobalPatterns)$col_graph <- col_graph

    genus <- agglomerateByRank(GlobalPatterns,"Genus",na.rm=TRUE)
    metadata(genus)$row_graph <- row_graph
    order <- agglomerateByRank(genus,"Order",na.rm=TRUE)
    metadata(order)$row_graph <- row_graph_order

    # plot a graph independently
    plotColGraph(col_graph,
                 genus,
                 colour_by = "SampleType",
                 edge_colour_by = "weight",
                 edge_width_by = "weight",
                 show_label = TRUE)

    # plot the graph stored in the object
    plotColGraph(genus,
                 name = "col_graph",
                 colour_by = "SampleType",
                 edge_colour_by = "weight",
                 edge_width_by = "weight")

    # plot a graph independently
    plotRowGraph(row_graph,
                 genus,
                 colour_by = "Kingdom",
                 edge_colour_by = "weight",
                 edge_width_by = "weight")

    # plot the graph stored in the object
    plotRowGraph(genus,
                 name = "row_graph",
                 colour_by = "Phylum",
                 edge_colour_by = "weight",
                 edge_width_by = "weight")

    # plot a graph independently
    plotRowGraph(row_graph_order,
                 order,
                 colour_by = "Kingdom",
                 edge_colour_by = "weight",
                 edge_width_by = "weight")

    # plot the graph stored in the object and include some labels
    plotRowGraph(order,
                 name = "row_graph",
                 colour_by = "Phylum",
                 edge_colour_by = "weight",
                 edge_width_by = "weight",
                 show_label = c("Sulfolobales","Spirochaetales",
                                "Verrucomicrobiales"))

    # labls can also be included via selecting specific rownames of x/y
    plotRowGraph(order,
                 name = "row_graph",
                 colour_by = "Phylum",
                 edge_colour_by = "weight",
                 edge_width_by = "weight",
                 show_label = c(1,10,50))

    # labls can also be included via a logical vector, which has the same length
    # as nodes are present
    label_select <- rep(FALSE,nrow(order))
    label_select[c(1,10,50)] <-  TRUE
    plotRowGraph(order,
                 name = "row_graph",
                 colour_by = "Phylum",
                 edge_colour_by = "weight",
                 edge_width_by = "weight",
                 show_label = label_select)

[Package miaViz version 1.2.1 Index]