Skip to contents

Implements hammer edge bundling via kernel density estimation (KDEEB).

Usage

edge_bundle_hammer(
  object,
  xy,
  bw = 0.05,
  decay = 0.7,
  npoints = 50,
  iterations = 12,
  grid = 256,
  step = 0.6,
  smooth = 1
)

Arguments

object

a graph object (igraph/network/tbl_graph)

xy

coordinates of vertices

bw

initial bandwidth (fraction of the layout extent)

decay

bandwidth decay per iteration (0-1)

npoints

number of points sampled per edge

iterations

number of bundling iterations

grid

resolution of the density grid

step

advection step size (multiple of the bandwidth)

smooth

number of smoothing passes per iteration

Value

data.frame containing the bundled edges

Details

Native re-implementation of the KDE-based bundling behind the datashader "hammer" bundler, following Hurter, Ersoy and Telea (2012). Earlier versions of this function wrapped datashader through reticulate; it now runs entirely in C++ with no Python dependency. Edges are sampled into points, a density field is estimated on a grid, points are advected up the density gradient, and the bandwidth shrinks each iteration so bundles emerge along density ridges.

see online for plotting tips

References

Hurter, Christophe, Ozan Ersoy, and Alexandru Telea. "Graph Bundling by Kernel Density Estimation." Computer Graphics Forum 31, no. 3 (2012): 865-874.

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_hammer(g, xy)
#>                x        y      index group
#> 1    0.000000000 1.000000 0.00000000     1
#> 2   -0.053184520 1.093478 0.02040816     1
#> 3   -0.093192053 1.193280 0.04081633     1
#> 4   -0.115136050 1.298550 0.06122449     1
#> 5   -0.121832340 1.405892 0.08163265     1
#> 6   -0.118035180 1.513377 0.10204082     1
#> 7   -0.103341888 1.619923 0.12244898     1
#> 8   -0.077893464 1.724432 0.14285714     1
#> 9   -0.046352471 1.827267 0.16326531     1
#> 10  -0.010018687 1.928502 0.18367347     1
#> 11   0.033984830 2.026640 0.20408163     1
#> 12   0.088465216 2.119374 0.22448980     1
#> 13   0.152069558 2.206119 0.24489796     1
#> 14   0.218964826 2.290350 0.26530612     1
#> 15   0.280966708 2.378217 0.28571429     1
#> 16   0.329281259 2.474271 0.30612245     1
#> 17   0.359268603 2.577537 0.32653061     1
#> 18   0.374997085 2.683933 0.34693878     1
#> 19   0.381924804 2.791274 0.36734694     1
#> 20   0.384717540 2.898805 0.38775510     1
#> 21   0.386981845 3.006348 0.40816327     1
#> 22   0.387151367 3.113914 0.42857143     1
#> 23   0.383631227 3.221423 0.44897959     1
#> 24   0.377338208 3.328806 0.46938776     1
#> 25   0.370659462 3.436166 0.48979592     1
#> 26   0.367139618 3.543675 0.51020408     1
#> 27   0.369305709 3.651219 0.53061224     1
#> 28   0.375569000 3.758604 0.55102041     1
#> 29   0.381593049 3.866003 0.57142857     1
#> 30   0.387056960 3.973431 0.59183673     1
#> 31   0.396045022 4.080623 0.61224490     1
#> 32   0.414138207 4.186656 0.63265306     1
#> 33   0.447413971 4.288934 0.65306122     1
#> 34   0.495329651 4.385235 0.67346939     1
#> 35   0.551267067 4.477115 0.69387755     1
#> 36   0.610211986 4.567093 0.71428571     1
#> 37   0.665777135 4.659193 0.73469388     1
#> 38   0.713874210 4.755406 0.75510204     1
#> 39   0.751336919 4.856211 0.77551020     1
#> 40   0.771681388 4.961803 0.79591837     1
#> 41   0.777514191 5.069209 0.81632653     1
#> 42   0.778216570 5.176773 0.83673469     1
#> 43   0.782277056 5.284256 0.85714286     1
#> 44   0.794516990 5.391116 0.87755102     1
#> 45   0.815108970 5.496688 0.89795918     1
#> 46   0.841374575 5.600998 0.91836735     1
#> 47   0.871631329 5.704214 0.93877551     1
#> 48   0.908980479 5.805081 0.95918367     1
#> 49   0.953494858 5.903005 0.97959184     1
#> 50   1.000000000 6.000000 1.00000000     1
#> 51   0.000000000 2.000000 0.00000000     2
#> 52   0.037319124 2.056932 0.02040816     2
#> 53   0.077469750 2.111905 0.04081633     2
#> 54   0.119469206 2.165481 0.06122449     2
#> 55   0.162182629 2.218489 0.08163265     2
#> 56   0.205629619 2.270897 0.10204082     2
#> 57   0.249712831 2.322765 0.12244898     2
#> 58   0.290293674 2.377410 0.14285714     2
#> 59   0.324439802 2.436296 0.16326531     2
#> 60   0.351057391 2.498918 0.18367347     2
#> 61   0.366857420 2.565115 0.20408163     2
#> 62   0.374237288 2.632787 0.22448980     2
#> 63   0.376498939 2.700824 0.24489796     2
#> 64   0.376482444 2.768899 0.26530612     2
#> 65   0.377781707 2.836962 0.28571429     2
#> 66   0.381071661 2.904958 0.30612245     2
#> 67   0.383995933 2.972971 0.32653061     2
#> 68   0.386222442 3.041011 0.34693878     2
#> 69   0.388889099 3.109034 0.36734694     2
#> 70   0.388690355 3.177110 0.38775510     2
#> 71   0.382359250 3.244888 0.40816327     2
#> 72   0.373404294 3.312372 0.42857143     2
#> 73   0.365929814 3.380035 0.44897959     2
#> 74   0.361230216 3.447948 0.46938776     2
#> 75   0.359215971 3.515994 0.48979592     2
#> 76   0.360048484 3.584064 0.51020408     2
#> 77   0.365916266 3.651886 0.53061224     2
#> 78   0.374823065 3.719377 0.55102041     2
#> 79   0.381163297 3.787155 0.57142857     2
#> 80   0.384686139 3.855140 0.59183673     2
#> 81   0.388653069 3.923100 0.61224490     2
#> 82   0.391996630 3.991094 0.63265306     2
#> 83   0.394147593 4.059136 0.65306122     2
#> 84   0.397958046 4.127099 0.67346939     2
#> 85   0.408809940 4.194290 0.69387755     2
#> 86   0.428691778 4.259383 0.71428571     2
#> 87   0.456576484 4.321463 0.73469388     2
#> 88   0.492293868 4.379413 0.75510204     2
#> 89   0.530284705 4.435901 0.77551020     2
#> 90   0.566776043 4.493370 0.79591837     2
#> 91   0.603629891 4.550607 0.81632653     2
#> 92   0.640892908 4.607576 0.83673469     2
#> 93   0.675768991 4.666035 0.85714286     2
#> 94   0.707578337 4.726222 0.87755102     2
#> 95   0.740982871 4.785524 0.89795918     2
#> 96   0.780953716 4.840595 0.91836735     2
#> 97   0.829106773 4.888676 0.93877551     2
#> 98   0.883508478 4.929583 0.95918367     2
#> 99   0.941028540 4.965990 0.97959184     2
#> 100  1.000000000 5.000000 1.00000000     2
#> 101  0.000000000 3.000000 0.00000000     3
#> 102  0.023170297 2.972312 0.02040816     3
#> 103  0.052334998 2.951040 0.04081633     3
#> 104  0.086394000 2.939039 0.06122449     3
#> 105  0.122335944 2.935412 0.08163265     3
#> 106  0.158228609 2.939361 0.10204082     3
#> 107  0.192345130 2.951170 0.12244898     3
#> 108  0.223348801 2.969711 0.14285714     3
#> 109  0.251478209 2.992370 0.16326531     3
#> 110  0.280054902 3.014468 0.18367347     3
#> 111  0.309491409 3.035408 0.20408163     3
#> 112  0.337868581 3.057760 0.22448980     3
#> 113  0.363913105 3.082771 0.24489796     3
#> 114  0.383112940 3.113246 0.26530612     3
#> 115  0.392137678 3.148184 0.28571429     3
#> 116  0.393001074 3.184282 0.30612245     3
#> 117  0.387396672 3.219967 0.32653061     3
#> 118  0.380092314 3.255344 0.34693878     3
#> 119  0.373659305 3.290891 0.36734694     3
#> 120  0.368028529 3.326572 0.38775510     3
#> 121  0.363414699 3.362400 0.40816327     3
#> 122  0.359911274 3.398354 0.42857143     3
#> 123  0.357494963 3.434396 0.44897959     3
#> 124  0.356373997 3.470504 0.46938776     3
#> 125  0.355485324 3.506617 0.48979592     3
#> 126  0.354176691 3.542715 0.51020408     3
#> 127  0.354615402 3.578833 0.53061224     3
#> 128  0.357706642 3.614825 0.55102041     3
#> 129  0.362807333 3.650586 0.57142857     3
#> 130  0.371706626 3.685597 0.59183673     3
#> 131  0.390775769 3.716043 0.61224490     3
#> 132  0.421820659 3.734241 0.63265306     3
#> 133  0.456643277 3.743827 0.65306122     3
#> 134  0.492193714 3.750223 0.67346939     3
#> 135  0.528110213 3.754095 0.69387755     3
#> 136  0.564001551 3.758081 0.71428571     3
#> 137  0.599368780 3.765404 0.73469388     3
#> 138  0.633901618 3.776007 0.75510204     3
#> 139  0.668109195 3.787618 0.77551020     3
#> 140  0.702354290 3.799117 0.79591837     3
#> 141  0.736255364 3.811565 0.81632653     3
#> 142  0.768385608 3.828039 0.83673469     3
#> 143  0.798476322 3.848028 0.85714286     3
#> 144  0.828377510 3.868298 0.87755102     3
#> 145  0.857941210 3.889045 0.89795918     3
#> 146  0.885189257 3.912762 0.91836735     3
#> 147  0.911808511 3.937164 0.93877551     3
#> 148  0.941476794 3.957773 0.95918367     3
#> 149  0.971724328 3.977517 0.97959184     3
#> 150  1.000000000 4.000000 1.00000000     3
#> 151  0.000000000 4.000000 0.00000000     4
#> 152 -0.006897151 3.963662 0.02040816     4
#> 153 -0.005395236 3.926733 0.04081633     4
#> 154  0.006263764 3.891632 0.06122449     4
#> 155  0.025613566 3.860115 0.08163265     4
#> 156  0.051089615 3.833306 0.10204082     4
#> 157  0.080403781 3.810764 0.12244898     4
#> 158  0.112856721 3.793036 0.14285714     4
#> 159  0.147537581 3.780183 0.16326531     4
#> 160  0.183497944 3.771531 0.18367347     4
#> 161  0.220029395 3.765747 0.20408163     4
#> 162  0.256836831 3.762123 0.22448980     4
#> 163  0.293778560 3.760350 0.24489796     4
#> 164  0.330556502 3.756480 0.26530612     4
#> 165  0.361229403 3.737720 0.28571429     4
#> 166  0.367967284 3.701758 0.30612245     4
#> 167  0.364172323 3.664973 0.32653061     4
#> 168  0.359478166 3.628292 0.34693878     4
#> 169  0.356513777 3.591434 0.36734694     4
#> 170  0.355486701 3.554465 0.38775510     4
#> 171  0.355655460 3.517479 0.40816327     4
#> 172  0.356366645 3.480499 0.42857143     4
#> 173  0.357639539 3.443537 0.44897959     4
#> 174  0.360134641 3.406636 0.46938776     4
#> 175  0.363529131 3.369807 0.48979592     4
#> 176  0.367906679 3.333085 0.51020408     4
#> 177  0.374108802 3.296630 0.53061224     4
#> 178  0.382528537 3.260627 0.55102041     4
#> 179  0.393766364 3.225411 0.57142857     4
#> 180  0.408422063 3.191482 0.59183673     4
#> 181  0.426357807 3.159145 0.61224490     4
#> 182  0.446261979 3.127973 0.63265306     4
#> 183  0.467439033 3.097654 0.65306122     4
#> 184  0.490274404 3.068563 0.67346939     4
#> 185  0.514754666 3.040846 0.69387755     4
#> 186  0.541253117 3.015056 0.71428571     4
#> 187  0.569614502 2.991326 0.73469388     4
#> 188  0.599490957 2.969547 0.75510204     4
#> 189  0.631342174 2.950775 0.77551020     4
#> 190  0.665031939 2.935530 0.79591837     4
#> 191  0.699915853 2.923255 0.81632653     4
#> 192  0.735602696 2.913551 0.83673469     4
#> 193  0.772021666 2.907100 0.85714286     4
#> 194  0.808857991 2.903857 0.87755102     4
#> 195  0.845815148 2.904408 0.89795918     4
#> 196  0.881785598 2.912931 0.91836735     4
#> 197  0.914964627 2.929250 0.93877551     4
#> 198  0.945756438 2.949728 0.95918367     4
#> 199  0.973415942 2.974284 0.97959184     4
#> 200  1.000000000 3.000000 1.00000000     4
#> 201  0.000000000 5.000000 0.00000000     5
#> 202 -0.007984773 4.929606 0.02040816     5
#> 203 -0.004616434 4.858860 0.04081633     5
#> 204  0.009879848 4.789543 0.06122449     5
#> 205  0.033872831 4.722902 0.08163265     5
#> 206  0.066240134 4.659888 0.10204082     5
#> 207  0.103883580 4.599878 0.12244898     5
#> 208  0.145311098 4.542411 0.14285714     5
#> 209  0.189196236 4.486796 0.16326531     5
#> 210  0.234499494 4.432329 0.18367347     5
#> 211  0.280096097 4.378109 0.20408163     5
#> 212  0.322711022 4.321514 0.22448980     5
#> 213  0.357896989 4.260025 0.24489796     5
#> 214  0.381482520 4.193241 0.26530612     5
#> 215  0.391395880 4.123117 0.28571429     5
#> 216  0.392367325 4.052281 0.30612245     5
#> 217  0.389769443 3.981484 0.32653061     5
#> 218  0.385879217 3.910745 0.34693878     5
#> 219  0.382319888 3.839990 0.36734694     5
#> 220  0.377457828 3.769314 0.38775510     5
#> 221  0.369084772 3.698965 0.40816327     5
#> 222  0.361161401 3.628569 0.42857143     5
#> 223  0.357443565 3.557821 0.44897959     5
#> 224  0.357255660 3.486977 0.46938776     5
#> 225  0.360203182 3.416195 0.48979592     5
#> 226  0.367089059 3.345686 0.51020408     5
#> 227  0.376537987 3.275474 0.53061224     5
#> 228  0.385620526 3.205214 0.55102041     5
#> 229  0.391532519 3.134620 0.57142857     5
#> 230  0.392036312 3.063779 0.59183673     5
#> 231  0.388298010 2.993032 0.61224490     5
#> 232  0.383933456 2.922322 0.63265306     5
#> 233  0.381096501 2.851534 0.65306122     5
#> 234  0.379769536 2.780701 0.67346939     5
#> 235  0.379192238 2.709859 0.69387755     5
#> 236  0.381477516 2.639054 0.71428571     5
#> 237  0.389883698 2.568709 0.73469388     5
#> 238  0.406384404 2.499817 0.75510204     5
#> 239  0.432478577 2.433966 0.77551020     5
#> 240  0.466199846 2.371665 0.79591837     5
#> 241  0.504461764 2.312043 0.81632653     5
#> 242  0.545743280 2.254469 0.83673469     5
#> 243  0.588529103 2.198003 0.85714286     5
#> 244  0.632271826 2.142275 0.87755102     5
#> 245  0.679000796 2.089030 0.89795918     5
#> 246  0.731761163 2.041751 0.91836735     5
#> 247  0.792366812 2.005103 0.93877551     5
#> 248  0.860074862 1.984446 0.95918367     5
#> 249  0.930874355 1.984487 0.97959184     5
#> 250  1.000000000 2.000000 1.00000000     5
#> 251  0.000000000 6.000000 0.00000000     6
#> 252 -0.048402731 5.902445 0.02040816     6
#> 253 -0.094318701 5.803696 0.04081633     6
#> 254 -0.131610852 5.701390 0.06122449     6
#> 255 -0.157471842 5.595622 0.08163265     6
#> 256 -0.171719957 5.487675 0.10204082     6
#> 257 -0.170869660 5.378802 0.12244898     6
#> 258 -0.154619585 5.271141 0.14285714     6
#> 259 -0.127845437 5.165592 0.16326531     6
#> 260 -0.094327255 5.061979 0.18367347     6
#> 261 -0.056181693 4.959977 0.20408163     6
#> 262 -0.015243173 4.859063 0.22448980     6
#> 263  0.029443609 4.759754 0.24489796     6
#> 264  0.081153860 4.663922 0.26530612     6
#> 265  0.139560919 4.572019 0.28571429     6
#> 266  0.202049526 4.482834 0.30612245     6
#> 267  0.265015531 4.393979 0.32653061     6
#> 268  0.321675081 4.300989 0.34693878     6
#> 269  0.362993090 4.200277 0.36734694     6
#> 270  0.383301251 4.093340 0.38775510     6
#> 271  0.387901127 3.984547 0.40816327     6
#> 272  0.385438488 3.875675 0.42857143     6
#> 273  0.378426132 3.767000 0.44897959     6
#> 274  0.369590565 3.658457 0.46938776     6
#> 275  0.364524081 3.549673 0.48979592     6
#> 276  0.366399337 3.440790 0.51020408     6
#> 277  0.373046494 3.332093 0.53061224     6
#> 278  0.380070692 3.223417 0.55102041     6
#> 279  0.384050529 3.114588 0.57142857     6
#> 280  0.383609582 3.005690 0.59183673     6
#> 281  0.380786979 2.896824 0.61224490     6
#> 282  0.379564545 2.787929 0.63265306     6
#> 283  0.384105527 2.679129 0.65306122     6
#> 284  0.400937439 2.571572 0.67346939     6
#> 285  0.433327540 2.467659 0.69387755     6
#> 286  0.479991514 2.369309 0.71428571     6
#> 287  0.537272091 2.276710 0.73469388     6
#> 288  0.598804765 2.186860 0.75510204     6
#> 289  0.655995927 2.094188 0.77551020     6
#> 290  0.699352466 1.994341 0.79591837     6
#> 291  0.722977614 1.888112 0.81632653     6
#> 292  0.729962267 1.779473 0.83673469     6
#> 293  0.729476994 1.670578 0.85714286     6
#> 294  0.729407282 1.561675 0.87755102     6
#> 295  0.735796826 1.452967 0.89795918     6
#> 296  0.753928491 1.345606 0.91836735     6
#> 297  0.787628646 1.242086 0.93877551     6
#> 298  0.840531997 1.146951 0.95918367     6
#> 299  0.913547092 1.066211 0.97959184     6
#> 300  1.000000000 1.000000 1.00000000     6