rescale_edge_attrs {DiagrammeR} | R Documentation

## Rescale numeric edge attribute values

### Description

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

### Usage

    rescale_edge_attrs(graph, edge_attr_from, to_lower_bound = 0,
      to_upper_bound = 1, edge_attr_to = NULL, from_lower_bound = NULL,
      from_upper_bound = NULL)

### Arguments

`graph` | a graph object of class `dgr_graph`.
`edge_attr_from` | the edge 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.
`edge_attr_to` | an optional name of a new edge attribute to which the recoded values will be applied. This will retain the original edge 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
    graph <-
      create_random_graph(
        n = 5, m = 7,
        set_seed = 23,
        directed = TRUE) %>%
      set_edge_attrs(
        edge_attr = weight,
        values = rnorm(edge_count(.), 5))

    # Get the graph's internal edf
    # to show which edge attributes
    # are available
    get_edge_df(graph)
    #>   id from to  rel   weight
    #> 1  1    2  3 <NA> 5.218288
    #> 2  2    3  5 <NA> 3.953465
    #> 3  3    3  4 <NA> 4.711311
    #> 4  4    2  4 <NA> 5.481550
    #> 5  5    2  5 <NA> 3.783624
    #> 6  6    4  5 <NA> 5.308137
    #> 7  7    1  4 <NA> 4.479822

    # Rescale the `weight` edge
    # attribute, so that its values
    # are rescaled between 0 and 1
    graph <-
      graph %>%
      rescale_edge_attrs(
        edge_attr_from = weight)

    # Get the graph's internal edf
    # to show that the edge attribute
    # values had been rescaled
    get_edge_df(graph)
    #>   id from to  rel weight
    #> 1  1    2  3 <NA>  0.845
    #> 2  2    3  5 <NA>  0.100
    #> 3  3    3  4 <NA>  0.546
    #> 4  4    2  4 <NA>  1.000
    #> 5  5    2  5 <NA>  0.000
    #> 6  6    4  5 <NA>  0.898
    #> 7  7    1  4 <NA>  0.410

    # Scale the values in the `weight`
    # edge attribute to different
    # shades of gray for the `color`
    # edge attribute and different
    # numerical values for the
    # `penwidth` attribute
    graph <-
      graph %>%
      rescale_edge_attrs(
        edge_attr_from = weight,
        to_lower_bound = "gray80",
        to_upper_bound = "gray20",
        edge_attr_to = color) %>%
      rescale_edge_attrs(
        edge_attr_from = weight,
        to_lower_bound = 0.5,
        to_upper_bound = 3,
        edge_attr_to = penwidth)

    # Get the graph's internal edf
    # once more to show that scaled
    # grayscale colors are now available
    # in `color` and scaled numerical
    # values are in the `penwidth`
    # edge attribute
    get_edge_df(graph)
    #>   id from to  rel weight   color penwidth
    #> 1  1    2  3 <NA>  0.845 #484848    2.612
    #> 2  2    3  5 <NA>  0.100 #BBBBBB    0.750
    #> 3  3    3  4 <NA>  0.546 #747474    1.865
    #> 4  4    2  4 <NA>  1.000 #333333    3.000
    #> 5  5    2  5 <NA>  0.000 #CCCCCC    0.500
    #> 6  6    4  5 <NA>  0.898 #414141    2.745
    #> 7  7    1  4 <NA>  0.410 #898989    1.525

[Package DiagrammeR version 0.9.2 Index]