carto_flow.symbol_cartogram.layout¶
Layout algorithms for symbol cartograms.
This module defines the Layout ABC and concrete layout implementations that compute positions and transforms, returning immutable LayoutResult.
Classes:
-
CentroidLayout–Layout that places symbols at geometry centroids.
-
CirclePackingLayout–Layout using two-stage circle packing simulation.
-
CirclePhysicsLayout–Layout using velocity-based physics simulation.
-
GridBasedLayout–Layout from grid-based assignment.
-
Layout–Abstract base for layout algorithms.
Functions:
-
get_layout–Instantiate a registered layout by name.
-
register_layout–Register a layout class by name.
CentroidLayout
¶
Bases: Layout
Layout that places symbols at geometry centroids.
Places symbols at the centroids of the original geometries, with optional local overlap removal.
Returns LayoutResult with CircleSymbol as canonical symbol.
Parameters:
-
options(CentroidLayoutOptions, default:None) –Full options object. Defaults to CentroidLayoutOptions().
-
**kwargs–Individual option overrides applied on top of options.
Examples:
>>> layout = CentroidLayout() # Default: remove overlap
>>> layout = CentroidLayout(remove_overlap=False) # Just centroids
>>> layout = CentroidLayout(spacing=0.1) # Larger gaps
Methods:
-
compute–Place symbols at centroids with optional overlap removal.
compute
¶
compute(
data: LayoutData,
show_progress: bool = True,
save_history: bool = False,
) -> LayoutResult
Place symbols at centroids with optional overlap removal.
Parameters:
-
data(LayoutData) –Preprocessed layout data.
-
show_progress(bool, default:True) –Display progress feedback during placement.
-
save_history(bool, default:False) –Record position snapshots per iteration.
Returns:
-
LayoutResult–Immutable layout result with CircleSymbol as canonical.
CirclePackingLayout
¶
Bases: Layout
Layout using two-stage circle packing simulation.
Two-stage approach: 1. Overlap Resolution: Global expansion + overlap projection 2. Circle Packing: Force-based with contact reaction constraint
This algorithm preserves topology better than CirclePhysicsLayout by using distance-gated angular forces and contact reaction.
Parameters:
-
options(CirclePackingLayoutOptions, default:None) –Full options object. Defaults to CirclePackingLayoutOptions().
-
**kwargs–Individual option overrides.
Methods:
-
compute–Run circle packing simulation and return result.
compute
¶
compute(
data: LayoutData,
show_progress: bool = True,
save_history: bool = False,
) -> LayoutResult
Run circle packing simulation and return result.
Parameters:
-
data(LayoutData) –Preprocessed layout data.
-
show_progress(bool, default:True) –Display progress feedback during placement.
-
save_history(bool, default:False) –Record position snapshots per iteration.
Returns:
-
LayoutResult–Immutable layout result with CircleSymbol as canonical.
CirclePhysicsLayout
¶
Bases: Layout
Layout using velocity-based physics simulation.
Two-phase approach: 1. Separation phase: Strong repulsion until overlaps resolved 2. Settling phase: Gentle attraction while maintaining separation
Parameters:
-
options(CirclePhysicsLayoutOptions, default:None) –Full options object. Defaults to CirclePhysicsLayoutOptions().
-
**kwargs–Individual option overrides.
Methods:
-
compute–Run physics simulation and return result.
compute
¶
compute(
data: LayoutData,
show_progress: bool = True,
save_history: bool = False,
) -> LayoutResult
Run physics simulation and return result.
Parameters:
-
data(LayoutData) –Preprocessed layout data.
-
show_progress(bool, default:True) –Display progress feedback during placement.
-
save_history(bool, default:False) –Record position snapshots per iteration.
Returns:
-
LayoutResult–Immutable layout result with CircleSymbol as canonical.
GridBasedLayout
¶
Bases: Layout
Layout from grid-based assignment.
Returns LayoutResult with appropriate Symbol based on tiling type.
Parameters:
-
options(GridBasedLayoutOptions, default:None) –Full options object (positional only). Defaults to GridBasedLayoutOptions().
-
**kwargs–Individual option overrides applied on top of options. Raises TypeError for unrecognized names.
Examples:
>>> layout = GridBasedLayout(tiling="hexagon")
>>> layout = GridBasedLayout(my_opts, neighbor_weight=0.5)
Methods:
-
compute–Run grid assignment and return result.
compute
¶
compute(
data: LayoutData,
show_progress: bool = True,
save_history: bool = False,
) -> LayoutResult
Run grid assignment and return result.
Parameters:
-
data(LayoutData) –Preprocessed layout data.
-
show_progress(bool, default:True) –Display progress feedback during placement.
-
save_history(bool, default:False) –Record position snapshots per iteration.
Returns:
-
LayoutResult–Immutable layout result with appropriate canonical symbol.
Layout
¶
Bases: ABC
Abstract base for layout algorithms.
Layouts compute positions and transforms, returning immutable LayoutResult.
Methods:
-
compute–Run layout algorithm and return immutable result.
compute
abstractmethod
¶
compute(
data: LayoutData,
show_progress: bool = True,
save_history: bool = False,
) -> LayoutResult
Run layout algorithm and return immutable result.
Parameters:
-
data(LayoutData) –Preprocessed data from prepare_layout_data().
-
show_progress(bool, default:True) –Display progress feedback during placement.
-
save_history(bool, default:False) –Record position snapshots per iteration.
Returns:
-
LayoutResult–Immutable result with canonical symbol and transforms.