agentsclimarketplace

Data visualization

Skill fabioc-aloha/Alex_Skill_Mall/plugins/data-analytics/data-visualization

284 curated plugins for AI assistants across 16 categories: security, Azure, documentation, code quality, cloud infrastructure, and more. Works with GitHub Copilot. Drop into .github/skills/local/ and go.

Install
npx -y skills add fabioc-aloha/Alex_Skill_Mall --skill data-visualization

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Story-intent chart selection, color theory, annotation patterns, decluttering rules, and the "title = insight" principle for data-driven visuals

SKILL.md

19.8 KB, as published. Nobody here has run it

Skill: Data Visualization

Choose the right chart for the story, not just the data shape. Every chart should make an argument.

Staleness Watch: See EXTERNAL-API-REGISTRY.md for source URLs and recheck cadence

Metadata

FieldValue
Skill IDdata-visualization
Version1.0.0
CategoryData Analytics
DifficultyIntermediate
PrerequisitesNone
Related Skillsdata-analysis, dashboard-design, data-storytelling, chart-interpretation, executive-storytelling, slide-design, graphic-design

Overview

Data visualization is not chart generation -- it is visual argumentation. The chart type, color palette, annotation, and title are all rhetorical choices that either strengthen or weaken the story.

Core Principles

PrincipleRule
Title = InsightChart titles state the takeaway, not the data label. "California leads with 39M" not "Population by State"
Story-Intent FirstAsk "what story?" before "what chart?"
Data-Ink RatioEvery pixel of ink should represent data. Remove everything else (Tufte)
3-Second TestIf a viewer can't grasp the point in 3 seconds, redesign
Annotation = ArgumentCallouts carry the story; the chart is evidence, the annotation is the argument

Module 1: Story-Intent Chart Selection

The primary axis for chart selection is what story the user wants to tell. Data shape is a secondary constraint.

Step 1 -- Identify Story Intent

Story IntentQuestion Being AnsweredPrimary ChartsAdvanced Charts
Compare"How do these items rank or differ?"Bar, Horizontal Bar, Grouped Bar, RadarBeeswarm, Parallel Coordinates
Change Over Time"How has this evolved?"Line, Area, Stacked AreaStreamgraph, Ridgeline
Part-to-Whole"What share does each segment hold?"Donut, Stacked Bar, PieWaffle, Sunburst
Distribution"How is this spread? What's normal vs. outlier?"Histogram, ScatterViolin, Beeswarm, Ridgeline
Relationship"How are these variables connected?"Scatter, BubbleChord, Network Graph, Parallel Coords
Flow / Process"Where does it go? What are the paths?"Horizontal Bar (stages)Sankey, Chord
Hierarchy"How is this organized in levels?"TreemapSunburst
Spatial Pattern"Where are the concentrations?"HeatmapNetwork Graph
Deviation"What deviates from the baseline?"Bar (diverging), Line (+ reference line)Beeswarm

Step 2 -- Narrow by Data Shape

Data ShapeCompatible IntentsRuled Out
Categorical + numericCompare, Part-to-Whole, DistributionFlow (unless sequential)
Two numeric variablesRelationship, DistributionPart-to-Whole
Time seriesChange Over Time, DeviationHierarchy
Network / adjacencyRelationship, FlowPart-to-Whole, Change Over Time
Hierarchical (parent-child)Hierarchy, Part-to-WholeChange Over Time, Distribution
Flow matrix (source-target)Flow, RelationshipCompare (use grouped bar)

Step 3 -- Audience & Context Filter

Choose Standard WhenChoose Advanced When
Audience expects familiar shapesComplex relationships (flows, networks)
Tooltip interactivity is criticalDistribution shape matters more than values
Chart.js handles the data shapeHierarchical structure needs multi-level view
Dashboard has 3+ charts (consistency)Single hero viz to anchor a story
Executive audience (30s scan)Analyst audience (exploration expected)

Story-Intent Detection Heuristics

When the user doesn't state intent explicitly, infer from language:

User LanguageInferred Intent
"rank", "compare", "versus", "top", "best/worst"Compare
"over time", "trend", "growth", "decline", "monthly"Change Over Time
"share", "proportion", "breakdown", "percent of"Part-to-Whole
"spread", "range", "outlier", "normal", "distribution"Distribution
"correlation", "relationship", "predict", "affects"Relationship
"flow", "path", "from X to Y", "conversion", "funnel"Flow / Process
"hierarchy", "drill down", "parent/child", "levels"Hierarchy
"where", "hotspot", "concentration", "geographic"Spatial Pattern
"deviation", "variance", "above/below target", "gap"Deviation

Module 2: Narrative Chart Pairing

A single chart tells one point. Paired charts reinforce the insight from a second angle.

Primary ChartGood PairWhy
Bar (compare)Donut (proportion)Shows both absolute and relative size
Line (trend)Bar (change amount)Shows direction and magnitude
Scatter (relationship)Histogram (distribution)Shows correlation and individual spread
Treemap (hierarchy)Table (detail)Shows structure and precise values
Sankey (flow)Stacked bar (proportions at each stage)Shows paths and stage composition

The Inverted Pyramid Pattern

From population.html reference -- arrange visuals in absorption order:

LayerComponentTime to AbsorbPurpose
1KPI cards2 seconds"What's the big picture?"
2Hero chart10 secondsFull distribution, interactive
3Supporting charts15 secondsSame data, different lens
4TableAs neededPrecise values for analysts
5Drill-downOn clickDetail without clutter

Module 3: Color Theory

Mandatory: Colorblind-Safe Palette

All chart output MUST use a colorblind-safe palette. The canonical palette for all the AI assistant charting skills is Tableau 10, verified against deuteranopia, protanopia, and tritanopia:

#4e79a7  Blue-Steel   (primary)
#f28e2b  Orange
#e15759  Coral
#76b7b2  Teal
#59a14f  Sage
#edc948  Gold
#b07aa1  Mauve
#ff9da7  Rose
#9c755f  Brown
#bab0ac  Warm Gray
PaletteColorsUse Case
Categorical (default)First N colors from the canonical 10 aboveUnordered categories
Sequential Blue#deebf7 → #08519cLow-to-high numeric
Diverging RdBu#b2182b → #f7f7f7 → #2166acAbove/below midpoint
Semantic RegionConsistent color per category across all charts on a pageRegion, department, status

Color Rules (Non-Negotiable)

RuleExplanation
Always colorblind-safeNever use a palette that has not been tested for deuteranopia, protanopia, and tritanopia
Semantic consistencySame color = same meaning across all charts on a page
Highlight, don't decorateUse saturated color for the key data point; mute everything else
Sequential for ordered dataLight-to-dark for low-to-high
Diverging for deviationTwo hues diverging from neutral midpoint
Never rely on color aloneAdd patterns, labels, or shapes for accessibility
Test with Sim DaltonismVerify with protanopia and deuteranopia simulation

WCAG Contrast Requirements

ContextMinimum Ratio
Text on background4.5:1 (AA), 7:1 (AAA)
Chart labels4.5:1 minimum
Data vs. background3:1 for graphical elements

Module 4: Decluttering (Tufte's Data-Ink Ratio)

Every element must earn its place. Remove anything that doesn't carry data.

RemoveReplace With
GridlinesLight reference lines only if needed
Borders around chart areaWhite space separation
Legends (when possible)Direct labels on data
Background fillsTransparent / minimal
3D effectsNever. Always flat.
Redundant axis labelsContext in title or subtitle

Before/After Anti-Patterns

Anti-PatternProblemFix
Rainbow paletteNo semantic meaningUse 2-3 purposeful colors
Every bar labeledVisual noiseLabel key values only
Dual Y axesMisleading correlationTwo separate charts
Pie with 8+ slicesUnreadableHorizontal bar, sorted
Missing axis zeroExaggerated differencesStart at zero or note truncation

Module 5: Annotation Hierarchy

ElementContentRule
TitleThe insight ("Sales peaked at $4.2M in Q3")Never a data label
SubtitleContext ("Quarterly revenue, FY 2024-2025")Who, what, when
CalloutThe exception ("Q1 2025: +31% jump -- pricing change?")Arrow or highlight
FootnoteCaveats ("Excludes returns. Source: SAP ERP.")Small, bottom
SourceData provenanceAlways present

Module 6: Small Multiples

Use faceted views when a single chart would be overloaded.

Use Small Multiples WhenUse Overlay When
5+ series on one chart2-3 series that interact
Each series has its own patternComparison is the point
Reader needs to see individual shapesRelative position matters

Implementation

Grid: 2x3 or 3x4 panels
Each panel: Same axes, same scale (critical!)
Difference: One variable changes per panel (category, time period, cohort)

Module 7: Accessibility

RequirementImplementation
Alt textDescribe the chart's insight, not its structure ("Revenue grew 34% in 2024" not "Bar chart showing revenue")
PatternsAdd hatching or shapes alongside color
KeyboardTab-navigable data points in interactive charts
Screen readeraria-label on chart container, data table fallback
High contrastTest in Windows High Contrast mode

Module 8: Tool Targets

TargetLibraryOutputWhen
HTML (self-contained)Chart.js 4.x via CDN.html fileDefault -- zero-config dashboards
HTML (advanced)Raw Canvas 2D API.html fileSankey, Chord, Sunburst, etc.
PythonPlotlyInteractive HTML/notebookData science workflows
Python (static)Matplotlib + SeabornPNG/SVGPublications, reports
MarkdownMermaidInline in docsDocumentation, PRs
Power BIDAX measures + visuals.pbixEnterprise BI

Chart.js Configuration Defaults

// Standard Chart.js defaults for all data-viz skills
Chart.defaults.font.family = "'Segoe UI', system-ui, sans-serif";
Chart.defaults.font.size = 13;
Chart.defaults.plugins.legend.display = false; // prefer direct labels
Chart.defaults.scales.x.grid.display = false; // declutter
Chart.defaults.scales.y.grid.color = "rgba(255,255,255,0.06)"; // subtle
Chart.defaults.plugins.tooltip.backgroundColor = "rgba(0,0,0,0.85)";

Module 9: Advanced Canvas Charts

10 chart types rendered with raw Canvas 2D API -- no extra dependencies beyond the browser.

ChartStory IntentData ShapeKey Technique
SankeyFlowSource-target-valueBezier curves between stacked bars
ChordRelationshipAdjacency matrixCircular arcs with ribbons
StreamgraphChange Over TimeMulti-series timeStacked area with centered baseline
SunburstHierarchyParent-childConcentric arcs, angular proportion
Parallel CoordinatesCompare (multi-dim)Many numeric columnsVertical axes, polylines
BeeswarmDistributionCategorical + numericForce-separated dots on axis
RidgelineDistribution (compare)Series of distributionsOverlapping density curves
WafflePart-to-WholePercentagesGrid of colored squares
Network GraphRelationshipNodes + edgesForce-directed layout
ViolinDistributionGrouped distributionsMirrored density curves

Canvas Rendering Pattern

// Standard pattern for all advanced charts
const canvas = document.getElementById("chart");
const ctx = canvas.getContext("2d");
const dpr = window.devicePixelRatio || 1;
canvas.width = canvas.clientWidth * dpr;
canvas.height = canvas.clientHeight * dpr;
ctx.scale(dpr, dpr);
// ... render logic

Reference Implementations

FileChartsPattern
visuals.html14 standard typesCard grid, mini/full pairs, per-chart metadata
adv_visuals.html10 advanced typesCanvas-only rendering, zero dependencies
population.html4 dashboard chartsInverted pyramid, narrative flow, drill-down

Anti-Patterns

Anti-PatternWhy It FailsFix
"Chart type first, data second"Picks visual before understanding the storyStart with story intent
Title just labels axesNo argument, no insightWrite a sentence the viewer should conclude
Rainbow palette on categoriesNo semantic meaning, accessibility failureMax 2-3 purposeful hues
Dual Y axesImplies false correlationTwo separate charts
Pie chart with 8+ slicesUnreadable, angle perception is poorSorted horizontal bar
3D anythingDistorts perception, adds zero informationAlways flat
Default gridlinesClutter that competes with dataRemove or make very subtle

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.