Module

DataViz.Layout.Hierarchy.Link

Package
purescript-hylograph-layout
Repository
afcondon/purescript-hylograph-layout

SVG path generators for hierarchical tree links.

Provides multiple link styles for connecting parent-child nodes in tree layouts:

  • Step links: Right-angle paths (H-V-H or V-H-V) for orthogonal trees
  • Bezier links: Smooth cubic curves for organic-looking trees
  • Radial links: Curved paths for radial/polar tree layouts
  • Diagonal links: Simple straight lines

Each generator takes source and target coordinates and returns an SVG path string. Use linkGenerator to dispatch based on LinkStyle.

#linkStepHorizontal Source

linkStepHorizontal :: Number -> Number -> Number -> Number -> String

Generate SVG path for horizontal step link (H-V-H) Good for left-to-right or right-to-left trees

#linkStepVertical Source

linkStepVertical :: Number -> Number -> Number -> Number -> String

Generate SVG path for vertical step link (V-H-V) Good for top-to-bottom trees (dendrograms)

#linkBezierVertical Source

linkBezierVertical :: Number -> Number -> Number -> Number -> String

Generate SVG path for vertical bezier link Good for aesthetic top-down tree diagrams

#linkBezierHorizontal Source

linkBezierHorizontal :: Number -> Number -> Number -> Number -> String

Generate SVG path for horizontal bezier link Good for aesthetic left-to-right tree diagrams

#linkBezierRadial Source

linkBezierRadial :: Number -> Number -> Number -> Number -> String

Generate SVG path for radial bezier link Converts Cartesian to polar coordinates for radial layouts Input: source (x1, y1) and target (x2, y2) in tree coordinates where x represents angle and y represents radius

#linkBezierRadialCartesian Source

linkBezierRadialCartesian :: Number -> Number -> Number -> Number -> String

Generate SVG path for radial bezier link from Cartesian coordinates Takes Cartesian (x, y) coordinates and converts to polar internally to calculate proper radial control points. Complements linkBezierRadial which takes angle/radius coordinates.

#linkDiagonal Source

linkDiagonal :: Number -> Number -> Number -> Number -> String

Generate SVG path for diagonal link (straight line)

#linkGenerator Source

linkGenerator :: LinkStyle -> (Number -> Number -> Number -> Number -> String)

Get link generator function for a given style