Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

layout_nodes_w_string

Layout nodes using a text-based schematic


Description

Layout one or several groups of nodes using a text-based schematic. The option is available to apply sorting to each of the groups.

Usage

layout_nodes_w_string(
  graph,
  layout,
  nodes,
  sort = NULL,
  width = 8,
  height = 8,
  ll = c(0, 0)
)

Arguments

graph

A graph object of class dgr_graph.

layout

A layout character string that provides a schematic for the layout. This consists of a rectangular collection of - characters (for no node placement), and numbers from 1 to 9 (representing different groupings of nodes, further described in the nodes argument).

nodes

A named vector of the form: c("1" = "[node_attr]:[value]", ...). The LHS corresponds to the numbers used in the layout schematic. The RHS provides a shorthand for the node attribute and a value for grouping together nodes (separated by a colon). For instance, with "type:a" in the RHS (and "1" in the LHS) we would target all nodes with a type attribute equal to a for positioning in the graph as described by the 1s in the layout.

sort

An optional sorting method to apply to the collection of nodes before assigning positional information. Like nodes, this is a named vector of the form: c("1" = "[node_attr]:asc|desc", ...). The node_attr in this case should be different than that used in nodes. Ideally, this node attribute should have unique values. Choose either asc or desc right of the colon for ascending or descending sorts.

width

The width of the layout diagram.

height

The height of the layout diagram.

ll

A vector describing the the lower-left coordinates of the layout

Value

A graph object of class dgr_graph.

See Also

Examples

# Create a graph with unique labels and
# several node `type` groupings
graph <-
  create_graph() %>%
  add_node(type = "a", label = "a") %>%
  add_node(type = "a", label = "b") %>%
  add_node(type = "b", label = "c") %>%
  add_node(type = "b", label = "d") %>%
  add_node(type = "b", label = "e") %>%
  add_node(type = "c", label = "f") %>%
  add_node(type = "c", label = "g")

# Define a 'layout' for groups of nodes
# using a text string (dashes are empty
# grid cells, numbers--representing
# ad-hoc groupings--correspond to
# individual nodes); here, define a layout
# with 3 groups of nodes
layout <-
"
1--------
1--------
---222---
--------3
--------3
"

# Use the `layout` along with what nodes
# the numbers correspond to in the graph
# with the `nodes` named vectors; the
# optional `sort` vector describes how
# we should sort the collection of node
# before adding position information
graph <-
  graph %>%
  layout_nodes_w_string(
    layout = layout,
    nodes = c("1" = "type:a",
              "2" = "type:b",
              "3" = "type:c"),
    sort = c("1" = "label:asc",
             "2" = "label:desc",
             "3" = "label:desc"))

# Show the graph's node data frame
# to confirm that `x` and `y` values
# were added to each of the nodes
graph %>% get_node_df()

DiagrammeR

Graph/Network Visualization

v1.0.6.1
MIT + file LICENSE
Authors
Richard Iannone [aut, cre] (<https://orcid.org/0000-0003-3925-190X>)
Initial release

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.