NEWS
edgebundle 1.0.0 (2026-07-24)
- added
edge_bundle(), a single entry point that dispatches to any bundler via type = c("force", "divided", "stub", "path", "hammer", "mingle")
- switched the test suite to testthat edition 3 and added correctness tests for every exported function
- modernised all
igraph calls to the 2.x API, removing deprecation warnings
edge_bundle_force() now also accepts a two-column edgelist matrix
- fixed
edge_bundle_stub(): the angular grouping was broken (wrong circular-gap handling and a bundle-size cap that summed cluster ids instead of counting edges) and vertical edges could produce NaN. Bundling output changes as a result
- fixed
edge_bundle_path(): the path-length used in the distortion test was computed along the wrong vertices, so edges were essentially never routed. Bundling output changes as a result
- added divided edge bundling for directed graphs via
edge_bundle_force(directed = TRUE) (Selassie et al. 2011): edges running in opposite directions are kept in separate lanes
edge_bundle_hammer() is now a native C++ implementation of KDE edge bundling (Hurter et al. 2012) and no longer depends on Python/reticulate/datashader. reticulate was dropped from Imports and install_bundle_py() was removed. Bundling output differs from the datashader-based version
- added
edge_bundle_mingle(), multilevel agglomerative edge bundling (Gansner et al. 2011); the kNN proximity graph is built with a bundled kd-tree (nanoflann) for O(E log E) scaling, with a k parameter for the number of merge candidates per edge
metro_multicriteria() is deprecated in favour of graphlayouts::layout_as_metromap() and will be removed in a future release
- added
flow_tree(), a spiral-tree flow map (Verbeek, Buchin & Speckmann 2011): planar, angle-restricted, keeps node positions fixed, and needs no dummy nodes or triangulation. It is the recommended flow map layout; the tnss_*() functions remain as an alternative. flow_tree(optimize = TRUE) additionally refines the tree (smoothness + obstacle avoidance) with join points held fixed
tnss_tree(): order = "weight" now orders leaves by flow magnitude (previously a no-op); fixed a bug in tnss_dummies() where one diagonal corner was misplaced; removed dead code. interp moved from Imports to Suggests (only tnss_tree() needs it)
edgebundle 0.4.2 (2023-12-16)
edgebundle 0.4.1 (2022-11-22)
- added package level docs
- added citation file
- some minor bug fixes
edgebundle 0.4.0 (2022-07-04)
- changed line straightening in
tnss_tree() to Visvalingam algorithm (NOTE: The meaning of the epsilon parameter is now reversed!)
- fixed a bug in
tnss_tree() which created duplicated mesh points
edgebundle 0.3.1 (2022-01-23)
edgebundle 0.3.0 (2021-10-30)
edgebundle 0.2.1 (2021-08-09)
- Fixed an error that occurred with valgrind
edgebundle 0.2.0 (2021-08-02)
- added more documentation
- cleanup of code
- fixed readme
edgebundle 0.1.0
- added smoothing for
tnss_tree()
edgebundle 0.0.1
- Added a
NEWS.md file to track changes to the package.