Marketplace

Data Visualization

Comprehensive data visualization skill covering visual execution and technical implementation. Includes perceptual foundations, chart selection, layout algorithms, and library guidance. Load on-demand when building charts, graphs, dashboards, or any visual data representation.

$ Installieren

git clone https://github.com/NTCoding/claude-skillz /tmp/claude-skillz && cp -r /tmp/claude-skillz/data-visualization ~/.claude/skills/claude-skillz

// tip: Run this command in your terminal to install the skill


name: Data Visualization description: "Comprehensive data visualization skill covering visual execution and technical implementation. Includes perceptual foundations, chart selection, layout algorithms, and library guidance. Load on-demand when building charts, graphs, dashboards, or any visual data representation." version: 1.0.0

Data Visualization

Visualization is communication. Every visual element must serve understanding.

Critical Rules

🚹 Use established algorithms. Graph layout, tree layout, spatial indexing—these problems are solved. Check dagre, d3-force, ELK.js before implementing anything custom.

🚹 Choose encodings by perceptual accuracy. Position beats length beats angle beats area beats color. Prefer bar charts over pie charts over bubble charts.

🚹 Never rely on color alone. 8% of men are colorblind. Use shape, pattern, or labels as backup encoding.

🚹 Match rendering to scale. SVG for <1000 elements, Canvas for 1000-10000, WebGL for >10000.


1. Visual Encoding

Marks & Channels

Marks are geometric primitives representing data:

  • Points (scatter plots, dot plots)
  • Lines (line charts, network edges)
  • Areas (bar charts, area charts, maps)

Channels are visual properties applied to marks:

  • Position (x, y coordinates)
  • Size (length, area, volume)
  • Color (hue, saturation, lightness)
  • Shape (circle, square, triangle)
  • Orientation (angle, slope)

Cleveland & McGill Hierarchy (1984)

Visual encodings ranked by perceptual accuracy:

  1. Position along common scale (most accurate)
  2. Position on non-aligned scales
  3. Length
  4. Angle/slope
  5. Area
  6. Volume
  7. Color saturation/hue (least accurate)

Implication: Bar charts (position) > pie charts (angle) > bubble charts (area)

Preattentive Attributes

Properties processed in <250ms without conscious effort:

  • Color (hue, saturation)
  • Form (orientation, length, width, size, shape)
  • Spatial position
  • Motion

Use preattentive attributes for the most important data—they "pop out" automatically.

Channel Effectiveness by Data Type

Data TypeBest Channels
QuantitativePosition, length, angle, area
OrdinalPosition, density, saturation
CategoricalShape, hue, spatial region

2. Interaction Design

Shneiderman's Mantra (1996)

"Overview first, zoom and filter, then details on demand"

  1. Overview — Show entire dataset, establish context
  2. Zoom & Filter — Reduce complexity, focus on subset
  3. Details on Demand — Tooltips, click-to-expand, drill-down

Interaction Patterns

PatternUse Case
Brushing & linkingCross-highlighting across coordinated views
Focus + contextFisheye lens, detail-on-demand panels
Direct manipulationDrag nodes, resize elements, reorder
Animated transitionsHelp users track changes between states
Pan & zoomNavigate large visualizations
FilteringReduce data to relevant subset
SelectionHighlight specific data points

3. Chart Selection

By Question Type

QuestionChart TypeWhy
How do values compare?Bar chartPosition encoding is most accurate
How has this changed over time?Line chartShows trends, handles many points
What's the distribution?Histogram, box plotShows spread, outliers, shape
What's the relationship?Scatter plotReveals correlation, clusters
What's the part-to-whole?Stacked bar, treemapShows composition
What are the connections?Network graph, SankeyShows relationships, flows
What's the hierarchy?Tree, sunburst, treemapShows parent-child structure
Where is it?Choropleth, symbol mapGeographic context

By Data Volume

VolumeApproach
<20 pointsSimple charts, direct labeling
20-500Standard visualization
500-5000Consider aggregation, filtering
5000+Aggregation mandatory, or Canvas/WebGL

Common Anti-Patterns

  • ❌ Pie charts with >5 slices (use bar chart)
  • ❌ 3D charts without strong justification
  • ❌ Dual-axis with unrelated scales (misleading)
  • ❌ Non-zero baselines for bar charts (distorts perception)
  • ❌ Truncated axes without clear indication

4. Color

Palette Types

TypeUse CaseExamples
SequentialLow to high valuesBlues, Greens, Viridis
DivergingValues diverge from midpointRdBu, BrBG, Spectral
CategoricalDistinct categoriesSet2, Tableau10, Category10

Colorblind Safety

  • 8% of men, 0.5% of women have color vision deficiency
  • Never rely on color alone—use shape, pattern, labels
  • Safe sequential: viridis, cividis, plasma
  • Safe categorical: ColorBrewer's colorblind-safe options
  • Test with: Coblis, Sim Daltonism, Chrome DevTools

Perceptual Uniformity

  • Avoid rainbow colormaps (jet)—perceptual steps are uneven
  • Use viridis, parula, cividis for sequential data
  • These ensure equal perceptual distance between values

Color Guidelines

  • 4.5:1 contrast ratio for text (WCAG AA)
  • 3:1 contrast for UI components
  • Max 7-10 distinct categorical colors
  • Use saturation/lightness variation for emphasis

5. Layout Algorithms

🚹 Before implementing ANY layout algorithm, check if a library exists.

Algorithm → Library Mapping

ProblemAlgorithmLibraries
Layered/DAG graphsSugiyama (1981)dagre, ELK.js
Force-directed networksFruchterman-Reingold (1991)d3-force, Cytoscape.js
Tree layoutsReingold-Tilford (1981)d3-hierarchy
TreemapsSquarified (2000)d3-hierarchy, ECharts
Circle packingWang (2006)d3-hierarchy
Sankey diagrams—d3-sankey
Chord diagrams—d3-chord
Large graphs (10k+)WebGL + spatial indexingSigma.js, G6, deck.gl
Spatial queriesQuadtree, R-treed3-quadtree, rbush
Edge crossing minimizationBarth (2002)Built into dagre/ELK

When to Use Each Layout

LayoutBest For
Sugiyama (dagre)Flowcharts, dependency graphs, DAGs with direction
Force-directedSocial networks, organic relationships, exploration
TreeHierarchies with single parent per node
TreemapHierarchies with quantitative values
CircularEmphasizing central nodes, ring structures
MatrixDense graphs where edges would overlap

These problems are solved. Never implement from scratch.


6. Rendering & Performance

Rendering Technology Thresholds

<1000 elements    → SVG
                    - DOM events work naturally
                    - Accessibility (ARIA) supported
                    - Crisp at any zoom level
                    - CSS styling

1000-10000        → Canvas
                    - Batch rendering
                    - Manual hit testing required
                    - Lower memory footprint
                    - requestAnimationFrame for animation

>10000            → WebGL
                    - GPU acceleration
                    - Sigma.js, deck.gl, regl
                    - Complex setup
                    - Limited text rendering

Performance Patterns

PatternWhen to Use
Web WorkersLayout computation (never block main thread)
Spatial indexingHit detection with quadtree/R-tree
Level-of-detailSimplify distant/small elements
Viewport cullingOnly render visible elements
DebouncingExpensive interactions (zoom, filter)
VirtualizationLong lists of chart components
AggregationToo many data points to render individually

Anti-Patterns

  • ❌ 5000 SVG nodes (use Canvas)
  • ❌ Layout computation on main thread
  • ❌ Hit testing without spatial indexing
  • ❌ Rendering off-screen elements
  • ❌ Animating thousands of elements individually

7. Libraries

Graph Layouts

LibraryBest ForNotes
dagreLayered DAGs, flowchartsSugiyama algorithm, good defaults
dagre-d3dagre + D3 renderingSVG output
ELK.jsComplex layouts, compound graphsEclipse Layout Kernel, highly configurable
d3-forceOrganic networksFruchterman-Reingold, customizable forces
Cytoscape.jsGraph analysis + visualizationRich algorithm library
Sigma.jsLarge graphs (10k+)WebGL rendering
G6/AntVEnterprise graphsFull-featured, Chinese ecosystem
vis-networkQuick prototypesEasy API, limited customization

Charting

LibraryBest ForNotes
D3.jsCustom, highly interactiveLow-level, maximum control
Observable PlotQuick explorationD3 team, excellent defaults
RechartsReact integrationDeclarative, composable
VictoryReact integrationAnimation support
EChartsFeature-rich dashboardsGreat mobile, large dataset support
Vega-LiteGrammar of graphicsDeclarative JSON spec
Chart.jsSimple chartsEasy setup, limited customization
PlotlyScientific visualization3D support, interactivity

When to Use D3 vs Higher-Level Libraries

Use D3 when:

  • Need complete control over rendering
  • Building novel/custom visualizations
  • Integrating with existing SVG/Canvas code
  • Performance-critical with custom optimizations

Use higher-level libraries when:

  • Standard chart types suffice
  • Faster development time matters
  • Team less experienced with D3
  • Need built-in responsiveness/animation

8. Composition & Layout

Project Composition (Dashboard Level)

  • Visual hierarchy — Guide eye to most important first
  • Grid systems — Align elements for coherence
  • Grouping — Related visualizations together
  • White space — Breathing room, not wasted space
  • Reading flow — Z-pattern or F-pattern for Western audiences

Chart Composition (Single Chart)

ElementGuidelines
TitleClear, descriptive; top-left or centered above
SubtitleAdditional context; smaller, below title
AxesLabeled with units; tick marks at meaningful intervals
LegendEmbedded when possible; external if complex
Aspect ratioAffects slope perception; 45° banking for trends
MarginsEnough for labels; consistent across charts

Aspect Ratio Guidelines

  • Line charts: ~16:9 for trends (banking to 45°)
  • Bar charts: Depends on number of bars
  • Scatter plots: Often square (1:1) for correlation
  • Maps: Preserve geographic proportions

9. Annotation

Annotation Types

TypePurpose
TitleThe "what" — identifies the visualization
SubtitleAdditional context, data source
CaptionThe "so what" — key insight or takeaway
Axis labelsVariable names and units
LegendDecode color/shape/size mappings
CalloutsHighlight specific data points
Reference linesBenchmarks, targets, averages
Source citationData provenance

Best Practices

  • Annotate the insight, not just the data — "Sales peaked in Q3" not just "Sales over time"
  • Use callouts sparingly — Highlight 1-3 key points maximum
  • Direct labeling — Embed labels in chart when possible (vs separate legend)
  • Provide context — Benchmarks, historical reference, targets
  • Layer information — Overview visible, details on interaction

Text Hierarchy

  1. Title (largest, boldest)
  2. Subtitle/caption
  3. Axis titles
  4. Tick labels
  5. Annotations
  6. Source (smallest)

10. Accessibility

WCAG Requirements

  • AA minimum (AAA preferred)
  • 4.5:1 contrast ratio for normal text
  • 3:1 contrast for large text and UI components
  • No information conveyed by color alone

Keyboard Navigation

  • Tab through interactive elements
  • Arrow keys for traversing data points
  • Enter/Space for selection
  • Escape to cancel/close

Screen Reader Support

<svg role="img" aria-labelledby="chart-title chart-desc">
  <title id="chart-title">Monthly Sales 2024</title>
  <desc id="chart-desc">Bar chart showing sales increasing from $10M in January to $15M in December</desc>
</svg>
  • Use ARIA labels and roles
  • Provide text alternatives
  • Announce dynamic updates with live regions
  • Structure for logical reading order

Alternative Representations

  • Data tables — Provide as fallback for all charts
  • Text summaries — Describe key insights
  • Sonification — Audio representation for time-series
  • Tactile graphics — For physical accessibility

11. Anti-Patterns Summary

Design Anti-Patterns

Anti-PatternWhy It's WrongWhat to Do
3D chartsDistorts perceptionUse 2D
Pie >5 slicesHard to compareUse bar chart
Dual unrelated axesMisleading correlationSeparate charts
Non-zero baselineExaggerates differencesStart at zero
Rainbow colormapPerceptually unevenUse viridis
Color-only encodingExcludes colorblindAdd shape/pattern
Chart junkDistracts from dataRemove decoration
OverplottingHides data densityAggregate or jitter

Implementation Anti-Patterns

Anti-PatternWhy It's WrongWhat to Do
Custom graph layoutReinventing solved problemUse dagre/ELK
5000 SVG nodesPoor performanceUse Canvas
Main thread layoutBlocks UIUse Web Worker
No spatial indexingSlow hit detectionUse quadtree
Rendering off-screenWasted computationViewport culling

12. Academic Foundations

Seminal Papers

PaperYearContribution
Cleveland & McGill "Graphical Perception"1984Visual encoding hierarchy
Shneiderman "The Eyes Have It"1996Overview-zoom-filter-details mantra
Gansner et al. "Drawing Directed Graphs"1993Foundation for dagre
Fruchterman & Reingold "Force-directed Placement"1991Foundation for d3-force
Sugiyama et al. "Hierarchical Systems"1981Layered graph layout
Barth et al. "Bilayer Cross Counting"2002Edge crossing minimization
Brewer "Color Use Guidelines"1994ColorBrewer palettes

Essential Resources

ResourceTypeFocus
ColorBrewer (colorbrewer2.org)ToolAccessible color palettes
From Data to Viz (data-to-viz.com)GuideChart selection decision tree
Visualization Analysis & Design (Munzner)TextbookComprehensive theory
Data Visualisation (Kirk)TextbookPractitioner guide
Visual Display of Quantitative Information (Tufte)TextbookData-ink ratio, chart junk
D3 Gallery (observablehq.com/@d3/gallery)ExamplesImplementation patterns

Summary

🚹 Before implementing visualization:

  1. What question are you answering? → Select chart type
  2. What's your data volume? → Select rendering technology
  3. Is there an established algorithm? → Use the library
  4. Is it accessible? → Color, keyboard, screen reader
  5. Does it follow perceptual best practices? → Encoding hierarchy