From a graph object of class dgr_graph, take a set of numeric values for a node attribute, rescale to a new numeric or color range, then write to the same node attribute or to a new node attribute column.

rescale_node_attrs(graph, node_attr_from, to_lower_bound = 0,
  to_upper_bound = 1, node_attr_to = NULL, from_lower_bound = NULL,
  from_upper_bound = NULL)

Arguments

graph

a graph object of class dgr_graph.

node_attr_from

the node attribute containing numeric data that is to be rescaled to new numeric or color values.

to_lower_bound

the lower bound value for the set of rescaled values. This can be a numeric value or an X11 color name.

to_upper_bound

the upper bound value for the set of rescaled values. This can be a numeric value or an X11 color name.

node_attr_to

an optional name of a new node attribute to which the recoded values will be applied. This will retain the original node attribute and its values.

from_lower_bound

an optional, manually set lower bound value for the rescaled values. If not set, the minimum value from the set will be used.

from_upper_bound

an optional, manually set upper bound value for the rescaled values. If not set, the minimum value from the set will be used.

Value

a graph object of class dgr_graph.

Examples

# Create a random graph using the # `add_gnm_graph()` function graph <- create_graph() %>% add_gnm_graph( n = 5, m = 10, set_seed = 23) %>% set_node_attrs( node_attr = value, values = rnorm( n = count_nodes(.), mean = 5, sd = 1) %>% round(1)) # Get the graph's internal ndf # to show which node attributes # are available graph %>% get_node_df()
#> id type label value #> 1 1 <NA> 1 5.3 #> 2 2 <NA> 2 4.4 #> 3 3 <NA> 3 5.8 #> 4 4 <NA> 4 5.9 #> 5 5 <NA> 5 6.2
# Rescale the `value` node # attribute, so that its values # are rescaled between 0 and 1 graph <- graph %>% rescale_node_attrs( node_attr_from = value, to_lower_bound = 0, to_upper_bound = 1) # Get the graph's internal ndf # to show that the node attribute # values had been rescaled graph %>% get_node_df()
#> id type label value #> 1 1 <NA> 1 0.500 #> 2 2 <NA> 2 0.000 #> 3 3 <NA> 3 0.778 #> 4 4 <NA> 4 0.833 #> 5 5 <NA> 5 1.000
# Scale the values in the `value` # node attribute to different # shades of gray for the `fillcolor` # and `fontcolor` node attributes graph <- graph %>% rescale_node_attrs( node_attr_from = value, to_lower_bound = "gray80", to_upper_bound = "gray20", node_attr_to = fillcolor) %>% rescale_node_attrs( node_attr_from = value, to_lower_bound = "gray5", to_upper_bound = "gray95", node_attr_to = fontcolor) # Get the graph's internal ndf # once more to show that scaled # grayscale colors are now available # in the `fillcolor` and `fontcolor` # node attributes graph %>% get_node_df()
#> id type label value fillcolor fontcolor #> 1 1 <NA> 1 0.500 #7B7B7B #767676 #> 2 2 <NA> 2 0.000 #CCCCCC #0D0D0D #> 3 3 <NA> 3 0.778 #525252 #B9B9B9 #> 4 4 <NA> 4 0.833 #4A4A4A #C7C7C7 #> 5 5 <NA> 5 1.000 #333333 #F2F2F2