:projection fn applied to each coordinate, defaults to identity. If your input coordinates are lat/lon, you probably want this to be (albers :scale radius-of-earth) since albers is an area-preserving projection.

The partition layout transforms root node of hierarchy into a flat collection of nodes positioned and sized according to provided value fn.
E.g., a doughnut plot can be created by partitioning the angular width and radius of a circle:

Returns axis hiccup vector for provided input scale and collection of ticks (numbers).
Direction away from the data frame is defined to be positive; use negative margins and widths to render axis inside of data frame.

Kwargs:

:orientation &in; (:top, :bottom, :left, :right), where the axis should be relative to the data frame, defaults to :left

Since there are no test input/output datasets for the labeling algorithm, I played it safe and copied the imperative algorithm from the paper.
If you rewrite it in an understandable and performant functional style, I'll accept a pull request and buy you a bottle of whiskey.