Within a graph's internal node data frame (ndf), use a categorical node attribute to generate a new node attribute with color values.
colorize_node_attrs(graph, node_attr_from, node_attr_to, cut_points = NULL, palette = "Spectral", alpha = NULL, reverse_palette = FALSE, default_color = "#D9D9D9")
graph | a graph object of class
|
---|---|
node_attr_from | the name of the node attribute column from which color values will be based. |
node_attr_to | the name of the new node attribute to which the color values will be applied. |
cut_points | an optional vector of numerical breaks for bucketizing continuous numerical values available in a node attribute column. |
palette | can either be: (1) a palette name from
the RColorBrewer package (e.g., |
alpha | an optional alpha transparency value to
apply to the generated colors. Should be in
the range of |
reverse_palette | an option to reverse the order
of colors in the chosen palette. The default is
|
default_color | a hexadecimal color value to
use for instances when the values do not fall into
the bucket ranges specified in the |
a graph object of class
dgr_graph
.
# Create a graph with 8 # nodes and 7 edges graph <- create_graph() %>% add_path(n = 8) %>% set_node_attrs( node_attr = weight, values = c( 8.2, 3.7, 6.3, 9.2, 1.6, 2.5, 7.2, 5.4)) # Find group membership values for all nodes # in the graph through the Walktrap community # finding algorithm and join those group values # to the graph's internal node data frame (ndf) # with the `join_node_attrs()` function graph <- graph %>% join_node_attrs( df = get_cmty_walktrap(.)) # Inspect the number of distinct communities graph %>% get_node_attrs( node_attr = walktrap_group) %>% unique() %>% sort()#> [1] 1 2 3# Visually distinguish the nodes in the different # communities by applying colors using the # `colorize_node_attrs()` function; specifically, # set different `fillcolor` values with an alpha # value of 90 and apply opaque colors to the node # border (with the `color` node attribute) graph <- graph %>% colorize_node_attrs( node_attr_from = walktrap_group, node_attr_to = fillcolor, palette = "Greens", alpha = 90) %>% colorize_node_attrs( node_attr_from = walktrap_group, node_attr_to = color, palette = "viridis", alpha = 80) # Show the graph's internal node data frame graph %>% get_node_df()#> id type label weight walktrap_group fillcolor color #> 1 1 <NA> 1 8.2 1 #E5F5E090 #44015480 #> 2 2 <NA> 2 3.7 1 #E5F5E090 #44015480 #> 3 3 <NA> 3 6.3 1 #E5F5E090 #44015480 #> 4 4 <NA> 4 9.2 3 #31A35490 #FDE72580 #> 5 5 <NA> 5 1.6 3 #31A35490 #FDE72580 #> 6 6 <NA> 6 2.5 2 #A1D99B90 #21908C80 #> 7 7 <NA> 7 7.2 2 #A1D99B90 #21908C80 #> 8 8 <NA> 8 5.4 2 #A1D99B90 #21908C80# Create a graph with 8 nodes and 7 edges graph <- create_graph() %>% add_path(n = 8) %>% set_node_attrs( node_attr = weight, values = c( 8.2, 3.7, 6.3, 9.2, 1.6, 2.5, 7.2, 5.4)) # We can bucketize values in `weight` using # `cut_points` and assign colors to each of the # bucketed ranges (for values not part of any # bucket, a gray color is assigned by default) graph <- graph %>% colorize_node_attrs( node_attr_from = weight, node_attr_to = fillcolor, cut_points = c(1, 3, 5, 7, 9)) # Now there will be a `fillcolor` node attribute # with distinct colors (the `#D9D9D9` color is # the default `gray85` color) graph %>% get_node_df()#> id type label weight fillcolor #> 1 1 <NA> 1 8.2 #2B83BA #> 2 2 <NA> 2 3.7 #FDAE61 #> 3 3 <NA> 3 6.3 #ABDDA4 #> 4 4 <NA> 4 9.2 #D9D9D9 #> 5 5 <NA> 5 1.6 #D7191C #> 6 6 <NA> 6 2.5 #D7191C #> 7 7 <NA> 7 7.2 #2B83BA #> 8 8 <NA> 8 5.4 #ABDDA4