Skip to contents

Implements the classic edge bundling by Holten.

Usage

edge_bundle_force(
  object,
  xy,
  K = 1,
  C = 6,
  P = 1,
  S = 0.04,
  P_rate = 2,
  I = 50,
  I_rate = 2/3,
  compatibility_threshold = 0.6,
  eps = 1e-08,
  directed = FALSE,
  ...
)

Arguments

object

a graph object (igraph/network/tbl_graph)

xy

coordinates of vertices

K

spring constant

C

number of iteration cycles

P

number of initial edge divisions

S

initial step size

P_rate

rate of edge divisions

I

number of initial iterations

I_rate

rate of iteration decrease per cycle

compatibility_threshold

threshold for when edges are considered compatible

eps

accuracy

directed

logical. If TRUE, use divided edge bundling (Selassie et al. 2011) which keeps edges running in opposite directions in separate lanes. Requires an igraph/tbl_graph object with edge directions.

...

arguments passed to the divided bundler when directed = TRUE: lane_width, k_spring, k_charge, decay, friction, step, passes, iterations, use_connectivity.

Value

data.frame containing the bundled edges

Details

This is a re-implementation of https://github.com/upphiminn/d3.ForceBundle. Force directed edge bundling is slow (O(E^2)).

see online for plotting tips

References

Holten, Danny, and Jarke J. Van Wijk. "Force-Directed Edge Bundling for Graph Visualization." Computer Graphics Forum (Blackwell Publishing Ltd) 28, no. 3 (2009): 983-990.

Selassie, David, Brandon Heller, and Jeffrey Heer. "Divided edge bundling for directional network data." IEEE Transactions on Visualization and Computer Graphics 17, no. 12 (2011): 2354-2363.

Author

David Schoch

Examples

library(igraph)
g <- graph_from_edgelist(
    matrix(c(
        1, 12, 2, 11, 3, 10,
        4, 9, 5, 8, 6, 7
    ), ncol = 2, byrow = TRUE), FALSE
)
xy <- cbind(c(rep(0, 6), rep(1, 6)), c(1:6, 1:6))
edge_bundle_force(g, xy)
#>               x        y      index group
#> 1   0.000000000 1.000000 0.00000000     1
#> 2   0.008647966 1.185137 0.03030303     1
#> 3   0.014879426 1.301964 0.06060606     1
#> 4   0.027136509 1.510348 0.09090909     1
#> 5   0.038181351 1.672843 0.12121212     1
#> 6   0.048136015 1.806628 0.15151515     1
#> 7   0.058286705 1.942714 0.18181818     1
#> 8   0.076570895 2.159926 0.21212121     1
#> 9   0.089507277 2.296006 0.24242424     1
#> 10  0.107794433 2.484172 0.27272727     1
#> 11  0.123932609 2.646244 0.30303030     1
#> 12  0.138893228 2.794076 0.33333333     1
#> 13  0.160706671 2.969781 0.36363636     1
#> 14  0.184114686 3.100309 0.39393939     1
#> 15  0.210712207 3.246366 0.42424242     1
#> 16  0.300016322 3.428936 0.45454545     1
#> 17  0.424797192 3.501619 0.48484848     1
#> 18  0.550181475 3.500919 0.51515152     1
#> 19  0.681988987 3.578892 0.54545455     1
#> 20  0.772008726 3.711603 0.57575758     1
#> 21  0.805646559 3.852816 0.60606061     1
#> 22  0.841016035 4.029786 0.63636364     1
#> 23  0.856873630 4.175313 0.66666667     1
#> 24  0.875719301 4.353678 0.69696970     1
#> 25  0.889282610 4.486283 0.72727273     1
#> 26  0.907750606 4.677837 0.75757576     1
#> 27  0.919511313 4.819154 0.78787879     1
#> 28  0.934304209 5.002496 0.81818182     1
#> 29  0.946512243 5.164910 0.84848485     1
#> 30  0.958332596 5.327352 0.87878788     1
#> 31  0.968731700 5.489332 0.90909091     1
#> 32  0.972317748 5.543579 0.93939394     1
#> 33  0.979247216 5.652067 0.96969697     1
#> 34  1.000000000 6.000000 1.00000000     1
#> 35  0.000000000 2.000000 0.00000000     2
#> 36  0.012483188 2.111069 0.03030303     2
#> 37  0.023071894 2.199039 0.06060606     2
#> 38  0.038486381 2.318076 0.09090909     2
#> 39  0.052530417 2.421444 0.12121212     2
#> 40  0.065954324 2.513160 0.15151515     2
#> 41  0.080995457 2.616051 0.18181818     2
#> 42  0.098862179 2.730940 0.21212121     2
#> 43  0.114156109 2.828123 0.24242424     2
#> 44  0.131954813 2.936929 0.27272727     2
#> 45  0.148830020 3.039865 0.30303030     2
#> 46  0.163030022 3.126668 0.33333333     2
#> 47  0.182632526 3.245728 0.36363636     2
#> 48  0.211371263 3.345556 0.39393939     2
#> 49  0.243392762 3.443319 0.42424242     2
#> 50  0.328403682 3.495960 0.45454545     2
#> 51  0.421779351 3.498344 0.48484848     2
#> 52  0.528429303 3.499147 0.51515152     2
#> 53  0.646198160 3.516107 0.54545455     2
#> 54  0.733635240 3.561518 0.57575758     2
#> 55  0.774820271 3.657489 0.60606061     2
#> 56  0.810968528 3.755175 0.63636364     2
#> 57  0.828159043 3.857603 0.66666667     2
#> 58  0.845568014 3.960892 0.69696970     2
#> 59  0.862314885 4.062295 0.72727273     2
#> 60  0.879556688 4.166727 0.75757576     2
#> 61  0.895060868 4.266615 0.78787879     2
#> 62  0.911477347 4.372896 0.81818182     2
#> 63  0.925693316 4.469107 0.84848485     2
#> 64  0.941956956 4.579289 0.87878788     2
#> 65  0.956948050 4.681183 0.90909091     2
#> 66  0.971409379 4.785817 0.93939394     2
#> 67  0.979255815 4.842598 0.96969697     2
#> 68  1.000000000 5.000000 1.00000000     2
#> 69  0.000000000 3.000000 0.00000000     3
#> 70  0.030303030 3.030303 0.03030303     3
#> 71  0.060605926 3.060606 0.06060606     3
#> 72  0.090073842 3.090074 0.09090909     3
#> 73  0.121211745 3.121212 0.12121212     3
#> 74  0.150010899 3.150011 0.15151515     3
#> 75  0.181817369 3.181817 0.18181818     3
#> 76  0.208569537 3.208570 0.21212121     3
#> 77  0.242423262 3.242423 0.24242424     3
#> 78  0.270175650 3.270176 0.27272727     3
#> 79  0.303029046 3.303029 0.30303030     3
#> 80  0.328060386 3.328060 0.33333333     3
#> 81  0.363635159 3.363635 0.36363636     3
#> 82  0.391719320 3.391719 0.39393939     3
#> 83  0.424240824 3.424241 0.42424242     3
#> 84  0.446807587 3.446808 0.45454545     3
#> 85  0.484846744 3.484847 0.48484848     3
#> 86  0.512057899 3.512058 0.51515152     3
#> 87  0.545453022 3.545453 0.54545455     3
#> 88  0.569373135 3.569373 0.57575758     3
#> 89  0.606059551 3.606060 0.60606061     3
#> 90  0.636183634 3.636184 0.63636364     3
#> 91  0.666665543 3.666666 0.66666667     3
#> 92  0.690160799 3.690161 0.69696970     3
#> 93  0.727270978 3.727271 0.72727273     3
#> 94  0.753500919 3.753501 0.75757576     3
#> 95  0.787877587 3.787878 0.78787879     3
#> 96  0.814783445 3.814783 0.81818182     3
#> 97  0.848484302 3.848484 0.84848485     3
#> 98  0.878787691 3.878788 0.87878788     3
#> 99  0.907922642 3.907923 0.90909091     3
#> 100 0.937589848 3.937590 0.93939394     3
#> 101 0.969696680 3.969697 0.96969697     3
#> 102 1.000000000 4.000000 1.00000000     3
#> 103 0.000000000 4.000000 0.00000000     4
#> 104 0.030303030 3.969697 0.03030303     4
#> 105 0.060605926 3.939394 0.06060606     4
#> 106 0.090073842 3.909926 0.09090909     4
#> 107 0.121211745 3.878788 0.12121212     4
#> 108 0.150010899 3.849989 0.15151515     4
#> 109 0.181817369 3.818183 0.18181818     4
#> 110 0.208569537 3.791430 0.21212121     4
#> 111 0.242423262 3.757577 0.24242424     4
#> 112 0.270175650 3.729824 0.27272727     4
#> 113 0.303029046 3.696971 0.30303030     4
#> 114 0.328060386 3.671940 0.33333333     4
#> 115 0.363635159 3.636365 0.36363636     4
#> 116 0.391719320 3.608281 0.39393939     4
#> 117 0.424240824 3.575759 0.42424242     4
#> 118 0.446807587 3.553192 0.45454545     4
#> 119 0.484846744 3.515153 0.48484848     4
#> 120 0.512057899 3.487942 0.51515152     4
#> 121 0.545453022 3.454547 0.54545455     4
#> 122 0.569373135 3.430627 0.57575758     4
#> 123 0.606059551 3.393940 0.60606061     4
#> 124 0.636183634 3.363816 0.63636364     4
#> 125 0.666665543 3.333334 0.66666667     4
#> 126 0.690160799 3.309839 0.69696970     4
#> 127 0.727270978 3.272729 0.72727273     4
#> 128 0.753500919 3.246499 0.75757576     4
#> 129 0.787877587 3.212122 0.78787879     4
#> 130 0.814783445 3.185217 0.81818182     4
#> 131 0.848484302 3.151516 0.84848485     4
#> 132 0.878787691 3.121212 0.87878788     4
#> 133 0.907922642 3.092077 0.90909091     4
#> 134 0.937589848 3.062410 0.93939394     4
#> 135 0.969696680 3.030303 0.96969697     4
#> 136 1.000000000 3.000000 1.00000000     4
#> 137 0.000000000 5.000000 0.00000000     5
#> 138 0.012483188 4.888931 0.03030303     5
#> 139 0.023071894 4.800961 0.06060606     5
#> 140 0.038486381 4.681924 0.09090909     5
#> 141 0.052530417 4.578556 0.12121212     5
#> 142 0.065954324 4.486840 0.15151515     5
#> 143 0.080995457 4.383949 0.18181818     5
#> 144 0.098862179 4.269060 0.21212121     5
#> 145 0.114156109 4.171877 0.24242424     5
#> 146 0.131954813 4.063071 0.27272727     5
#> 147 0.148830020 3.960135 0.30303030     5
#> 148 0.163030022 3.873332 0.33333333     5
#> 149 0.182632526 3.754272 0.36363636     5
#> 150 0.211371263 3.654444 0.39393939     5
#> 151 0.243392762 3.556681 0.42424242     5
#> 152 0.328403682 3.504040 0.45454545     5
#> 153 0.421779351 3.501656 0.48484848     5
#> 154 0.528429303 3.500853 0.51515152     5
#> 155 0.646198160 3.483893 0.54545455     5
#> 156 0.733635240 3.438482 0.57575758     5
#> 157 0.774820271 3.342511 0.60606061     5
#> 158 0.810968528 3.244825 0.63636364     5
#> 159 0.828159043 3.142397 0.66666667     5
#> 160 0.845568014 3.039108 0.69696970     5
#> 161 0.862314885 2.937705 0.72727273     5
#> 162 0.879556688 2.833273 0.75757576     5
#> 163 0.895060868 2.733385 0.78787879     5
#> 164 0.911477347 2.627104 0.81818182     5
#> 165 0.925693316 2.530893 0.84848485     5
#> 166 0.941956956 2.420711 0.87878788     5
#> 167 0.956948050 2.318817 0.90909091     5
#> 168 0.971409379 2.214183 0.93939394     5
#> 169 0.979255815 2.157402 0.96969697     5
#> 170 1.000000000 2.000000 1.00000000     5
#> 171 0.000000000 6.000000 0.00000000     6
#> 172 0.008647966 5.814863 0.03030303     6
#> 173 0.014879426 5.698036 0.06060606     6
#> 174 0.027136509 5.489652 0.09090909     6
#> 175 0.038181351 5.327157 0.12121212     6
#> 176 0.048136015 5.193372 0.15151515     6
#> 177 0.058286705 5.057286 0.18181818     6
#> 178 0.076570895 4.840074 0.21212121     6
#> 179 0.089507277 4.703994 0.24242424     6
#> 180 0.107794433 4.515828 0.27272727     6
#> 181 0.123932609 4.353756 0.30303030     6
#> 182 0.138893228 4.205924 0.33333333     6
#> 183 0.160706671 4.030219 0.36363636     6
#> 184 0.184114686 3.899691 0.39393939     6
#> 185 0.210712207 3.753634 0.42424242     6
#> 186 0.300016322 3.571064 0.45454545     6
#> 187 0.424797192 3.498381 0.48484848     6
#> 188 0.550181475 3.499081 0.51515152     6
#> 189 0.681988987 3.421108 0.54545455     6
#> 190 0.772008726 3.288397 0.57575758     6
#> 191 0.805646559 3.147184 0.60606061     6
#> 192 0.841016035 2.970214 0.63636364     6
#> 193 0.856873630 2.824687 0.66666667     6
#> 194 0.875719301 2.646322 0.69696970     6
#> 195 0.889282610 2.513717 0.72727273     6
#> 196 0.907750606 2.322163 0.75757576     6
#> 197 0.919511313 2.180846 0.78787879     6
#> 198 0.934304209 1.997504 0.81818182     6
#> 199 0.946512243 1.835090 0.84848485     6
#> 200 0.958332596 1.672648 0.87878788     6
#> 201 0.968731700 1.510668 0.90909091     6
#> 202 0.972317748 1.456421 0.93939394     6
#> 203 0.979247216 1.347933 0.96969697     6
#> 204 1.000000000 1.000000 1.00000000     6