Skip to contents

edgebundle 1.0.0

  • 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

CRAN release: 2023-12-16

  • clean up codebase

edgebundle 0.4.1

CRAN release: 2022-11-22

  • added package level docs
  • added citation file
  • some minor bug fixes

edgebundle 0.4.0

CRAN release: 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

CRAN release: 2022-01-23

  • minor bug fixes

edgebundle 0.3.0

CRAN release: 2021-10-30

edgebundle 0.2.1

CRAN release: 2021-08-09

  • Fixed an error that occurred with valgrind

edgebundle 0.2.0

CRAN release: 2021-08-02

  • added more documentation
  • cleanup of code
  • fixed readme

edgebundle 0.1.0

edgebundle 0.0.1

  • Added a NEWS.md file to track changes to the package.