bruin-data / bruin-data/dac

DAC Support for Pattern Encoding

Open
#6 1 comment 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Go
Stars
730
Forks
33
Avg merge
11h 47m
Merged PRs (30d)
18

Description

### What problem are you trying to solve?
DAC has no support for pattern-based visual encoding such as dashed or dotted lines, or striped / hatched bar and area fills.

- Current chart configuration does not expose per-series style controls for line stroke patterns or fill patterns.
- Multi-series charts depend mostly on color to distinguish series.
- This limits accessibility for colorblind users and reduces readability in grayscale, print, or low-contrast contexts.
- There is no standard way in YAML or TSX to assign visual patterns to specific series.

### Proposed solution
Add first-class per-series pattern styling for DAC chart widgets.

```yaml
- name: Revenue vs Forecast
type: chart
chart: line
sql: |
SELECT month, actual_revenue, forecast_revenue
FROM revenue_by_month
ORDER BY month
x: month
y: [actual_revenue, forecast_revenue]
seriesStyles:
actual_revenue:
lineStyle: solid
forecast_revenue:
lineStyle: dashed
```

```yaml
- name: Regional Mix
type: chart
chart: bar
sql: |
SELECT region, current_share, prior_share
FROM regional_mix
ORDER BY current_share DESC
x: region
y: [current_share, prior_share]
seriesStyles:
current_share:
fillStyle: solid
prior_share:
fillStyle: striped
```

Support should include:
- line patterns such as `solid`, `dashed`, `dotted`
- fill patterns such as `solid`, `striped`, `hatched`
- per-series configuration in both YAML and TSX
- correct rendering in chart legends and tooltips

### Alternatives considered
- Rely on color alone — insufficient for accessibility and weak in grayscale / print.
- Explain encodings in surrounding text only — helps, but does not solve in-chart differentiation.
- Use separate charts for each series — increases layout cost and makes comparison harder.
- Fork DAC locally to add custom styling — works, but creates maintenance and upgrade drift.

### Additional context
Pattern-based encodings are a standard accessibility technique for data visualization. They are especially useful for multi-series comparisons, forecast-vs-actual charts, grouped bars, and any dashboard that may be viewed in grayscale, printed, or by users who cannot reliably distinguish colors. This would make DAC charts more robust without changing default behavior for existing dashboards.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.