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.

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

# 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 graph %>% get_node_df()
#> 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 graph %>% get_node_df()
#> 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 graph %>% get_node_df()
#> 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