Install
$ agentstack add skill-igbuend-grimbard-data-visualization ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Data Visualization
Principles and best practices for effective data visualization.
Core Principles
Tufte's Foundations
Data-Ink Ratio: Maximize ink used for actual data
- Remove unnecessary gridlines, borders, backgrounds
- Eliminate 3D effects, shadows, decorative elements
- Every visual element must justify its existence
Lie Factor: Graphical representation must match data
- Lie Factor = Size of Effect in Graphic / Size of Effect in Data
- Ideal = 1. Substantial distortion when >1.05 or Color > Size > Shape > Orientation
| Attribute | Use Case | |-----------|----------| | Position (spatial) | Ranking, trends | | Color (hue) | Categorical distinction | | Size | Quantitative comparison | | Shape | Category distinction | | Intensity | Highlighting differences |
Color
Palette Types
Sequential: Ordered data (low → high), single hue light to dark Diverging: Data with meaningful midpoint, two hues meeting at neutral Categorical: Nominal data, distinct equally-spaced hues (max 6-8)
Color-Blind Safe Palettes
~8% of men and 0.5% of women have color vision deficiency. Design for them by default.
Okabe-Ito Palette (recommended default):
- Black
#000000, Orange#E69F00, Sky Blue#56B4E9 - Bluish Green
#009E73, Yellow#F0E442, Blue#0072B2 - Vermillion
#D55E00, Reddish Purple#CC79A7
Other tested palettes: Viridis, Cividis, Paul Tol, ColorBrewer (colorblind filter)
Color Blindness Types
| Type | Prevalence | Confusion | |------|-----------|-----------| | Deuteranomaly | 5% of men | Red-green (most common) | | Protanopia | 1% of men | Red-green | | Deuteranopia | 1.3% of men | Red-green | | Tritanopia | 0.0001% | Blue-yellow (rare) | | Achromatopsia | 0.003% | No color (greyscale) |
Cultural Considerations
| Color | Western | China | Other | |-------|---------|-------|-------| | Red | Danger | Good luck | Death (some African) | | White | Purity | Death | | | Green | Environment | Infidelity | |
Accessibility
Fundamental Rule
Never use color alone to encode data. Always combine with at least one other channel:
- Color + pattern/texture (bar charts)
- Color + line style: solid, dashed, dotted (line charts)
- Color + shape (scatter plots)
- Color + direct labels (all charts)
Contrast Requirements (WCAG)
| Element | AA (minimum) | AAA (enhanced) | |---------|-------------|----------------| | Body text | 4.5:1 | 7:1 | | Large text (18pt+) | 3:1 | 4.5:1 | | Non-text (lines, bars, icons) | 3:1 | — | | Focus indicators | 3:1 | 3:1 + 2px space |
Low Vision Design
~253 million people globally have visual impairment.
Typography in charts:
- Minimum 12px for labels (14px preferred)
- Sans-serif fonts for readability
- Line height ≥1.5×
- High contrast text (4.5:1 minimum)
Layout:
- Support browser zoom to 200% without content loss
- No horizontal scrolling at zoomed levels
- Direct data labeling reduces magnification needs
- Avoid cluttered, dense layouts
Dark mode:
- Avoid pure white (#fff) on pure black (#000) — causes halation
- Use slightly heavier font weights on dark backgrounds
- Maintain all contrast ratios
Screen Reader Accessibility
Alt text for charts (follow the four-level model by Lundgard & Satyanarayan, 2021):
- What: Chart type and data ("Bar chart showing 2024 sales by region")
- How: Encoding method ("Bars represent revenue in USD")
- Readout: Key values ("North America leads at $450K")
- Insight: Patterns/trends ("45% year-over-year growth")
SVG accessibility:
2024 Sales by Region
Bar chart. North America leads with 45% of revenue.
Always provide: data table alternative or detailed description for complex charts.
Multi-Modal Access
Beyond visual, consider:
- Sonification: Map data values to pitch/rhythm (Highcharts Sonification Studio, TwoTone)
- Tactile graphics: Raised-surface charts for blind users (swell-touch paper, 3D print)
- Haptic feedback: Vibration intensity proportional to data values
- MAIDR: Multi-Access Interactive Data Representation (text + audio + tactile)
Accessibility Legislation
| Jurisdiction | Law/Standard | Requirement | |-------------|-------------|-------------| | US | Section 508, ADA | WCAG 2.0/2.1 AA (federal); courts use WCAG for ADA | | EU | European Accessibility Act (2025), EN 301 549 | WCAG 2.1 AA for public + private sectors | | UK | Equality Act 2010, PSBAR 2018 | WCAG 2.1 AA for public sector | | Japan | JIS X 8341-3:2016 | Aligned with WCAG, AA recommended | | Australia | Disability Discrimination Act 1992 | WCAG 2.1 AA benchmark | | Canada | Accessible Canada Act, AODA (Ontario) | WCAG 2.0 AA minimum, moving to 2.1 | | Singapore | Digital Service Standards | WCAG 2.1 AA for government | | China | GB/T 37668-2019 | Aligned with WCAG 2.0 | | South Korea | KWCAG 2.1 | Aligned with WCAG 2.1 |
Accessibility Testing Checklist
- [ ] Color not sole encoding method (WCAG 1.4.1)
- [ ] Text contrast ≥4.5:1 (WCAG 1.4.3)
- [ ] Non-text contrast ≥3:1 (WCAG 1.4.11)
- [ ] Supports 200% zoom (WCAG 1.4.4)
- [ ] Text spacing adjustable (WCAG 1.4.12)
- [ ] Alt text or data table provided (WCAG 1.1.1)
- [ ] Keyboard navigable (WCAG 2.1.1)
- [ ] Test with color blindness simulator (Coblis, ColorOracle)
- [ ] Test with screen reader (NVDA, VoiceOver)
- [ ] Grayscale test: still understandable?
Chart Selection
Data type:
├─ Categorical comparison → Bar chart
├─ Part-to-whole → Treemap/stacked bar (avoid pie >4 slices)
├─ Time series → Line chart
├─ Distribution → Histogram, box plot, violin
├─ Correlation → Scatter plot
├─ Geographic → Choropleth, proportional symbol
└─ Network/flow → Network graph, Sankey
Common Mistakes
Avoid
- Truncated Y-axis in bar charts
- Dual Y-axes (false correlations)
- >4 pie chart slices
- 3D charts
- Rainbow palettes without meaning
- Over-plotting (too many points)
- Color-only encoding (accessibility failure)
- Insufficient contrast on chart elements
Fixes
- Clutter → Small multiples, sparklines
- No context → Add baseline, benchmarks
- Hard to compare → Consistent scales, aligned axes
- Data overload → Filter, aggregate, progressive disclosure
- Inaccessible → Redundant encoding, alt text, data tables
Domain Guidance
Financial
- Candlestick charts for prices
- Treemaps for portfolio allocation
- Log vs linear scale for long timeframes
- Annotate key events (earnings, mergers)
Security/SOC
- Heatmaps for activity over time
- Network graphs for connection analysis
- Sankey for traffic flow
- Red/amber/green severity (with icons for color-blind users)
- Dark theme preferred (reduce eye strain)
Scientific
- Vector graphics (SVG, PDF)
- Field-specific conventions
- Follow Nature 2025 checklist: clarity, accessibility
- 300+ DPI, clear labeling
- Color-blind safe palettes mandatory for publications
Tools
| Use Case | Tool | |----------|------| | Custom web viz | D3.js, Plotly, Olli (accessible) | | BI dashboards | Tableau, Power BI, Apache ECharts | | Static reports | Matplotlib, Seaborn, ggplot2 | | Rapid prototyping | Flourish, Google Data Studio | | AI/ML integration | Python (Matplotlib, Plotly, Altair) |
Accessibility Tools
| Purpose | Tool | |---------|------| | Color blind simulation | Coblis, ColorOracle, Chrome "Let Me Color" | | Contrast checking | WebAIM Contrast Checker, axe DevTools | | Screen reader testing | NVDA (free), JAWS, VoiceOver | | Accessibility audit | WAVE, Lighthouse, Accessibility Insights | | Accessible charts | Olli (MIT), Highcharts Sonification | | Color palette design | ColorBrewer, Paul Tol, Accessible Colors |
Quick Reference
- Start with grayscale — add color only to encode data
- Redundant encoding — color + pattern/shape/label always
- Okabe-Ito palette — default color-blind safe choice
- 4.5:1 / 3:1 — text contrast / non-text contrast minimums
- Small multiples — same chart across subsets solves clutter
- Tufte's test — can you remove this element and still understand?
- Alt text + data table — provide text alternatives for every chart
- Test accessibility — simulator + screen reader + grayscale
Resources
- Tufte's 4 books (foundational)
- Wilke, Fundamentals of Data Visualization (2019)
- Lundgard & Satyanarayan, "Accessible Visualization via Natural Language Descriptions" (2021)
- Hajas et al., "Rich Screen Reader Experiences" (2022, MIT)
- Nature 2025 scientific visualization checklist
- W3C WAI: w3.org/WAI
- ColorBrewer: colorbrewer2.org
- WebAIM: webaim.org
- DIAGRAM Center: diagramcenter.org
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: igbuend
- Source: igbuend/grimbard
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.