Coordinate Systems
If Scales define the mathematical mapping of data, the Coordinate System defines the physical space where that mapping is realized. It determines how the $(x, y)$ pairs from our scales are positioned and distorted on the canvas to create different types of visualizations.
The Role of Coordinates
The coordinate system is the final arbiter of geometry. It takes normalized values (from 0 to 1) and translates them into physical coordinates. Its responsibilities include:
- Spatial Translation: Converting abstract ratios into pixel positions.
- Axis Orientation: Deciding if the X-axis runs horizontally or wraps around a circle.
- Visual Transformation: Handling effects like "Coord Flip" (swapping X and Y) or polar projections.
- Clipping: Determining if data points that fall outside the defined boundaries should be hidden.
Cartesian Coordinates (Cartesian2D)
The Cartesian system is the most common coordinate system, mapping data onto a rectangular plane.
- Linear Mapping: It directly maps normalized X to width and normalized Y to height.
- Coordinate Flipping: Charton supports a "Flipped" state. When enabled, the X-axis becomes vertical and the Y-axis becomes horizontal. This is a powerful way to turn a vertical Bar Chart into a horizontal one without changing the underlying data encoding.
- Layout Hints: The Cartesian system provides specific hints to the layout engine, such as suggesting that bars should occupy 50% of their available slot width by default to ensure readability.
Polar Coordinates (Polar)
The Polar coordinate system maps data into a circular space, which is essential for radial visualizations like Pie charts, Donut charts, and Rose plots.
- Angle and Radius:
- The X dimension is mapped to the Angle (theta), typically spanning from $0$ to $2\pi$.
- The Y dimension is mapped to the Radius (r), extending from the center to the outer edge.
- Angular Customization: Users can define the
start_angle(e.g., starting from the 12 o'clock position) and the totalend_anglefor partial circular plots. - Donut Configurations: By adjusting the
inner_radius, the system can create a hole in the center, transforming a standard radial plot into a donut-style visualization.
The Coordinate Pipeline
Regardless of the system chosen, Charton follows a unified interface for rendering:
- Normalization: Data is first converted to a $[0, 1]$ range by the Scales.
- Transformation: The Coordinate System takes these ratios. For example, in a Polar system, it calculates $x = r \cdot \cos(\theta)$ and $y = r \cdot \sin(\theta)$.
- Canvas Mapping: The resulting points are scaled and shifted to fit within the
PanelContext—the actual physical rectangle reserved for the plot.
8.5 Coordinate-Driven Layouts
Different coordinate systems require different aesthetic defaults. As specified in the layout logic:
- Cartesian Bars often have gaps between groups to distinguish categories.
- Polar Sectors (like in a Pie chart) often have zero spacing by default to maintain a solid, continuous circular shape.
The Coordinate System communicates these "Layout Hints" to the Marks, ensuring that the visualization looks correct out-of-the-box, whether it's a grid-based scatter plot or a radial wind rose.
Key Takeaways
- Cartesian is for rectangular grids; Polar is for circular/radial views.
- Coordinate Flipping allows for easy orientation changes (Horizontal vs. Vertical).
- Coordinate Systems are the final step in the transformation pipeline, converting mathematical ratios into physical geometry.