type: task id: GRAPH_LIBRARY-INVESTIGATE_AUTO_GENERATED_CHART_TITLES_FROM_AXIS_SEMANTICS title: Investigate auto-generated chart titles from axis semantics description: Explore whether standard charts should support an optional fallback title generated from axis semantics, such as Revenue vs. Age, when no explicit chart title is authored. milestone: m1-ft-analytics-analyst-pilot owner: data-viz-designer-engineer status: not_started priority: p2
Superseded (2026-03-27). This narrowly scoped follow-on was consolidated into Consolidate semantic chart defaults and rendering control-surface follow-ons so the active backlog carries one M2 umbrella task instead of many M1 leaf items. Keep the notes below as reference detail, not as a separately scheduled task.
Explore whether standard charts should support an optional fallback title generated from axis semantics, such as Revenue vs. Age, when no explicit chart title is authored.
During M1 structure critique, the question came up whether Dataface should be able to generate a chart title from axis semantics when no explicit title is authored. A simple example is:
y = revenuex = ageRevenue vs. AgeCurrent system behavior appears to be:
x_label / y_label when presentslug_to_title(...)Relevant evidence:
docs/docs/reference/single-chart-property-catalog.md:95
x_label and y_label are documented top-level axis-title controls.dataface/core/render/chart/standard_renderer.py
x-axis title falls back to slug_to_title(field) when x_label is absent, and
y-axis title falls back to slug_to_title(y_field) when y_label is absent.dataface/core/render/chart/standard_renderer.py
standard charts call set_chart_title(spec, resolved_chart.title) and do not
synthesize a fallback from axis semantics.Constraint:
Y vs. X titles everywhere.Recommended: Add an optional fallback title policy for standard charts when title is empty.
Example rule:
- if both x and y semantics exist and the chart family is axis-based, synthesize Y vs. X
- prefer x_label / y_label over raw field names
- fall back to humanized field names only when labels are absent
This keeps authored titles primary while giving untitled charts a more meaningful default.
Add a chart-level explicit setting such as settings.title_fallback: axis_semantics.
This would be more explicit and avoid surprising authors, but it introduces another authored control surface.
Keep titles fully manual and do nothing. This is the simplest implementation story, but it misses a chance to provide more useful default behavior in exploratory or minimally authored charts.
Generate titles only in the playground or editor surfaces, not in final rendering. This could help authors see a suggested title without baking it into the rendering contract, but it splits behavior between authoring and runtime.
Y vs. X should be:
- a renderer fallback
- an authored opt-in
- or only a suggestion surfaced in toolingtitle
- semantic labels (x_label, y_label)
- humanized field namesY vs. X is semantically wrong or awkwardx_label / y_label and slug_to_title(field).<!-- For UI/browser tasks: use Playwright MCP to explore the running app. Record bugs found, fixes applied, and suggestions for future work. Skip for non-UI tasks (mark N/A). -->
Notes:
<!-- Reviewer comments, what was changed in response, and sign-off. -->