colorize_node_attrs {DiagrammeR} | R Documentation

## 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

    # 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
    get_node_attrs(
      graph = graph,
      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
    get_node_df(graph)
    #>   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)
    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

[Package DiagrammeR version 0.9.2 Index]