Define asymmetric independent and dependent axis treatments
Problem
Research and define when Dataface should treat independent and dependent axes differently in chart structure and texture. Capture design rationale from Muth-style chart-texture references, document what Vega-Lite can express natively for axis-specific treatment, and recommend which distinctions should become Dataface structure/theme defaults in a later milestone. Keep this separate from M1 chart-batch delivery unless a specific pilot issue proves it necessary.
Context
- Muth-style chart-texture references suggest that independent and dependent axes do not always deserve identical treatment. In practice, baselines, grid lines, labels, and other guide elements may need different emphasis depending on whether they support value reading, category reading, temporal orientation, or reference framing.
- This is a meaningful chart-library design decision, but it does not currently feel like an M1 chart-batch blocker. It should therefore be captured as downstream design-and-architecture work unless specific pilot examples prove otherwise.
- Current Dataface behavior already treats axes differently in some structural ways:
xgets smart label-posture handling indataface/core/render/chart/presentation.pyygets different defaults indataface/core/render/chart/standard_renderer.py- built-in structures already differentiate
axisXandaxisYindataface/core/compile/chart_structures/*.yml - Current Dataface behavior does not yet define a chart-library-owned asymmetric x/y texture system for colors, guide weight, or other visual hierarchy choices.
- Vega-Lite can express substantially more axis-specific treatment than Dataface is currently using. Relevant surfaces include:
- shared
config.axis config.axisX/config.axisY- side-specific surfaces such as
axisTop,axisBottom,axisLeft,axisRight - type-specific surfaces such as
axisQuantitative,axisTemporal,axisDiscrete - direct per-encoding overrides on
encoding.x.axisandencoding.y.axis - That means the key question is not whether Vega-Lite can support asymmetric axis treatment; it largely can. The real questions are:
- which distinctions are genuinely valuable
- which belong in structure defaults versus theme defaults
- which are global versus chart-family-specific
- which are worth systematizing in Dataface at all
- This task should treat the Muth references as design evidence, not as a literal style prescription.
Possible Solutions
- Keep x and y mostly symmetric except for existing posture/orientation defaults. Trade-offs: simpler system, but may miss important chart-reading improvements where dependent and independent axes play visibly different roles.
- Recommended: define a small, explicit set of asymmetries that matter for reading and texture, and implement them primarily through Vega-Lite-native structure/theme config rather than bespoke renderer logic. Trade-offs: more thoughtful and potentially more legible, while still staying close to Vega-Lite; requires careful restraint to avoid overfitting special cases.
- Create a large chart-library rule system with extensive axis-specific heuristics. Trade-offs: expressive, but too heavy and too risky before the core chart language is more stable.
Plan
- Inventory where Dataface already differentiates
xandy. - Inventory which axis-specific distinctions Vega-Lite can express natively.
- Review Muth-style references and extract the underlying reasoning, especially around: baseline emphasis, dependent-axis readability, grid relevance, and label hierarchy.
- Propose a small set of asymmetric defaults that are worth carrying forward.
- Decide which belong in: structure presets, theme/paint defaults, or explicit chart-level overrides.
- Convert the resulting recommendations into implementation tasks only if they remain valuable after M1.
Implementation Progress
- 2026-03-24: Task created as a downstream follow-on from the M1 chart-batch gray/texture discussion so the question is preserved without forcing it into immediate M1 scope.
- 2026-03-24: Initial context captured: Dataface already has some x/y structural asymmetry, Vega-Lite can support much more, and the missing work is to decide which asymmetric treatments are actually worth formalizing in the chart-library system.
- 2026-03-25: Reviewed local Codex history and task context to answer the gating
question directly. The March 24 planning pass already established that Vega-Lite
natively exposes the needed asymmetric axis surfaces (
config.axisX,config.axisY, side-specific axis configs, type-specific axis configs, and per-encoding axis overrides). The unresolved work is therefore design policy, not platform capability. - 2026-03-25: Closed this task as complete at the research/decision level: "is this possible?" is answered yes, and any future work should be framed as a scoped structure/theme-default implementation task rather than reopening the capability question.
QA Exploration
- [x] QA exploration completed (or N/A for non-UI tasks)
- N/A for research and roadmap closeout only.
Review Feedback
- [x] Review cleared
- No code-path change shipped in this closeout; completion is based on the documented March 24 research findings and local history review.