Dataface Tasks

Define asymmetric independent and dependent axis treatments

IDGRAPH_LIBRARY-DEFINE_ASYMMETRIC_INDEPENDENT_AND_DEPENDENT_AXIS_TREATMENTS
Statuscompleted
Priorityp2
Milestonem1-ft-analytics-analyst-pilot
Ownerdata-viz-designer-engineer
Completed byrj
Completed2026-03-25

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:
  • x gets smart label-posture handling in dataface/core/render/chart/presentation.py
  • y gets different defaults in dataface/core/render/chart/standard_renderer.py
  • built-in structures already differentiate axisX and axisY in dataface/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.axis and encoding.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

  1. Inventory where Dataface already differentiates x and y.
  2. Inventory which axis-specific distinctions Vega-Lite can express natively.
  3. Review Muth-style references and extract the underlying reasoning, especially around: baseline emphasis, dependent-axis readability, grid relevance, and label hierarchy.
  4. Propose a small set of asymmetric defaults that are worth carrying forward.
  5. Decide which belong in: structure presets, theme/paint defaults, or explicit chart-level overrides.
  6. 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.