Visualization responsibility
PreciseViz is the visualization and browsing package. Its job is to help users see typed relatedness outputs without changing what those outputs mean.
The package boundary should include functions that render, browse, or export already-created relatedness objects:
-
precise_viz()routes typed objects to appropriate visual panels. -
precise_trellis()browses many visualization panels. -
precise_graphml()exports graph matrices for external graph tools.
The visualization layer should accept the outputs of earlier tiers and render what is already there. It should not silently compute new distances, transform types, fuse matrices, or infer meaning from values.
Boundary rule
PreciseViz can be heavier than PreciseDist. That is acceptable.
Visualization naturally pulls in graphics, layout, browsing, and export
dependencies. The default static visualization engine is ggplot2. Plotly
is an optional interactive renderer selected inside each view’s
params, not a separate data path. Some views compute
coordinates first — for example, embeddings use UMAP by default, can use
explicit 2-D/3-D t-SNE through Rtsne, and graph views use
igraph layouts — but the rendered panel remains a plot object over
declared visualization data.
The important constraint is conceptual, not weight alone: PreciseViz should remain a consumer of typed relatedness objects. It should show structure, agreement, uncertainty, and failure modes without hiding the matrices that created them.
The same rule applies to styling. Embeddings should not show Cartesian grids, because the axes are coordinates for visual separation rather than measured variables. Heatmaps should use a consistent sequential palette for relatedness intensity. Interactive views should add hover, zoom, and browsing affordances without changing the underlying matrix, graph layout, or embedding coordinates.