DiagrammeR (version 0.9.0)

set_node_position: Apply a layout position to a single node

Description

Apply position information for a single node. This is done by setting the x and y attrs for a node id or node label supplied in node. When rendering the graph, nodes with attribute values set for x and y will be fixed to those positions on the graph canvas.

Usage

set_node_position(graph, node, x, y, use_labels = FALSE)

Arguments

graph

a graph object of class dgr_graph.

node

a single-length vector containing either a node ID value (integer) or a node label (character) for which position information should be applied.

x

the x coordinate to set for the node.

y

the y coordinate to set for the node.

use_labels

an option to use a node label value in node. Note that this is only possible if all nodes have distinct label values set and none exist as an NA value.

Value

a graph object of class dgr_graph.

Examples

Run this code
# NOT RUN {
# Create a simple graph with 4 nodes
graph <-
  create_graph() %>%
  add_node(label = "one") %>%
  add_node(label = "two") %>%
  add_node(label = "three") %>%
  add_node(label = "four")

# Add position information to each of
# the graph's nodes
graph <-
  graph %>%
  set_node_position(
    node = 1, x = 1, y = 1) %>%
  set_node_position(
    node = 2, x = 2, y = 2) %>%
  set_node_position(
    node = 3, x = 3, y = 3) %>%
  set_node_position(
    node = 4, x = 4, y = 4)

# View the graph's node data frame to
# verify that the `x` and `y` node
# attributes are available and set to
# the values provided
get_node_df(graph)
#>   id type label x y
#> 1  1 <NA>   one 1 1
#> 2  2 <NA>   two 2 2
#> 3  3 <NA> three 3 3
#> 4  4 <NA>  four 4 4

# The same function can modify the data
# in the `x` and `y` attributes
graph <-
  graph %>%
  set_node_position(
    node = 1, x = 1, y = 4) %>%
  set_node_position(
    node = 2, x = 3, y = 3) %>%
  set_node_position(
    node = 3, x = 3, y = 2) %>%
  set_node_position(
    node = 4, x = 4, y = 1)

# View the graph's node data frame
get_node_df(graph)
#>   id type label x y
#> 1  1 <NA>   one 1 4
#> 2  2 <NA>   two 3 3
#> 3  3 <NA> three 3 2
#> 4  4 <NA>  four 4 1

# Position changes can also be made by
# supplying a node `label` value (and setting
# `use_labels` to TRUE). For this to work,
# all `label` values in the graph's ndf must
# be unique and non-NA
graph <-
  graph %>%
  set_node_position(
    node = "one",
    x = 1, y = 1,
    use_labels = TRUE) %>%
  set_node_position(
    node = "two",
    x = 2, y = 2,
    use_labels = TRUE)

# View the graph's node data frame
get_node_df(graph)
#>   id type label x y
#> 1  1 <NA>   one 1 1
#> 2  2 <NA>   two 2 2
#> 3  3 <NA> three 3 2
#> 4  4 <NA>  four 4 1
# }

Run the code above in your browser using DataCamp Workspace