DiagrammeR (version 0.9.0)

colorize_node_attrs: Apply colors based on node attribute values

Description

Within a graph's internal node data frame (ndf), use a categorical node attribute to generate a new node attribute with color values.

Usage

colorize_node_attrs(graph, node_attr_from, node_attr_to, cut_points = NULL,
  palette = "Spectral", alpha = NULL, reverse_palette = FALSE,
  default_color = "#D9D9D9")

Arguments

graph

a graph object of class dgr_graph.

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., Greens, OrRd, RdYlGn), (2) viridis, which indicates use of the viridis color scale from the package of the same name, or (3) a vector of hexadecimal color names.

alpha

an optional alpha transparency value to apply to the generated colors. Should be in the range of 0 (completely transparent) to 100 (completely opaque).

reverse_palette

an option to reverse the order of colors in the chosen palette. The default is FALSE.

default_color

a hexadecimal color value to use for instances when the values do not fall into the bucket ranges specified in the cut_points vector.

Value

a graph object of class dgr_graph.

Examples

Run this code
# NOT RUN {
# Create a graph with 8 nodes and 7 edges
graph <-
  create_graph() %>%
  add_path(8) %>%
  set_node_attrs(
    "weight",
    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(get_cmty_walktrap(.))

# Inspect the number of distinct communities
get_node_attrs(graph, "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(
    "walktrap_group", "fillcolor", alpha = 90) %>%
  colorize_node_attrs(
    "walktrap_group", "color")

# Show the graph's internal node data frame
get_node_df(graph)
#>   id type label weight walktrap_group fillcolor   color
#> 1  1 <NA>     1    8.2              1 #FC8D5990 #FC8D59
#> 2  2 <NA>     2    3.7              1 #FC8D5990 #FC8D59
#> 3  3 <NA>     3    6.3              1 #FC8D5990 #FC8D59
#> 4  4 <NA>     4    9.2              3 #99D59490 #99D594
#> 5  5 <NA>     5    1.6              3 #99D59490 #99D594
#> 6  6 <NA>     6    2.5              2 #FFFFBF90 #FFFFBF
#> 7  7 <NA>     7    7.2              2 #FFFFBF90 #FFFFBF
#> 8  8 <NA>     8    5.4              2 #FFFFBF90 #FFFFBF

# Create a graph with 8 nodes and 7 edges
graph <-
  create_graph() %>%
  add_path(8) %>%
  set_node_attrs(
    "weight",
    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(
    "weight", "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)
get_node_df(graph)
#>   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
# }

Run the code above in your browser using DataLab