Visualisation D3.js interactive

VérifiéSûr

Créez des visualisations de données interactives avec D3.js. Utilisez-le pour créer des graphiques, diagrammes réseau, visualisations géographiques ou SVG personnalisées.

Spar Skills Guide Bot
Data & IAIntermédiaire
28/07/2026
Claude CodeCursorCodex
#d3js#data-visualization#svg#interactive-charts#javascript

Recommandé pour

Synthèse automatique

Guide pratique pour construire des visualisations de données interactives en D3.js, avec des exemples de code pour les graphiques courants, les infobulles, le zoom et les transitions.

Points forts

  • Fournit un flux de travail complet et réutilisable : dimensions, marges, échelles, axes et liaison de données via join
  • Donne des extraits de code prêts à l'emploi pour les graphiques en barres, en ligne et en secteurs
  • Couvre l'interactivité (infobulles, zoom/pan) et les transitions, y compris les animations décalées
  • Indique explicitement quand préférer une autre bibliothèque (Three.js pour la 3D, Chart.js/Recharts pour des graphiques simples)

Limites

  • Annonce les diagrammes de réseau et les visualisations géographiques mais ne fournit aucun exemple pour ces cas
  • N'aborde ni le chargement des données (CSV, fetch), ni l'accessibilité, ni le rendu responsive
  • Le contenu est rédigé en coréen, ce qui peut gêner certains lecteurs
Quand l'utiliser

À utiliser lorsque vous devez créer un graphique ou une visualisation SVG personnalisée et interactive qui dépasse les capacités d'une bibliothèque de graphiques clé en main.

Quand l'éviter

À éviter pour des graphiques standards très simples où Chart.js ou Recharts suffisent, ou pour de la visualisation 3D qui relève de Three.js.

Analyse de sécurité

Sûr
Score qualité76/100

The skill contains only D3.js instructional snippets and declares ordinary file-editing tools; it does not instruct destructive commands, credential access, network exfiltration, obfuscated payloads, or safety bypasses. The only minor concern is an educational tooltip pattern that could lead to XSS if used with untrusted data.

Points d'attention
  • •Tooltip example uses .html(`Value: ${d.value}`) with unescaped data, which could introduce XSS if copied into an app handling untrusted input; prefer textContent or sanitize.
Comment cette analyse est faite

Exemples

Bar chart with tooltips
Using D3.js, build a bar chart of monthly sales from this JSON array, with a hover tooltip showing the exact value and an animated transition when the data updates.
Zoomable line chart
Create a D3 line chart of daily temperatures with a time scale on the x-axis, and add pan and zoom limited to a 0.5x–10x range.
Custom animated chart
I need a custom SVG visualization that Recharts can't do: a scatter plot with staggered entrance animations and a log-scaled y-axis, written in D3 v7.

name: d3-viz description: Create interactive data visualizations using D3.js. Use this when creating charts, graphs, network diagrams, geographic visualizations, or custom SVG-based data visualization. allowed-tools: Read, Glob, Grep, Edit, Write license: MIT metadata: author: chrisvoncsefalvay version: "1.0"

D3.js Visualization

D3.js를 사용한 인터랙티브 데이터 시각화 가이드입니다.

When to Use D3.js

적합한 경우:

  • 커스텀 차트 (표준 라이브러리에 없는)
  • 인터랙티브 탐색 (pan, zoom, brush)
  • 네트워크/그래프 시각화
  • 지리 시각화 (커스텀 projection)
  • 애니메이션 transition
  • 출판 품질 그래픽

대안 고려:

  • 3D 시각화 → Three.js
  • 간단한 차트 → Chart.js, Recharts

Setup

// npm
import * as d3 from 'd3';

// CDN
<script src="https://d3js.org/d3.v7.min.js"></script>

Core Workflow

function drawVisualization(data) {
  if (!data || data.length === 0) return;

  const svg = d3.select('#chart');
  svg.selectAll("*").remove(); // Clear previous

  // 1. Dimensions
  const width = 800;
  const height = 400;
  const margin = { top: 20, right: 30, bottom: 40, left: 50 };
  const innerWidth = width - margin.left - margin.right;
  const innerHeight = height - margin.top - margin.bottom;

  // 2. Main group with margins
  const g = svg.append("g")
    .attr("transform", `translate(${margin.left},${margin.top})`);

  // 3. Scales
  const xScale = d3.scaleLinear()
    .domain([0, d3.max(data, d => d.x)])
    .range([0, innerWidth]);

  const yScale = d3.scaleLinear()
    .domain([0, d3.max(data, d => d.y)])
    .range([innerHeight, 0]);

  // 4. Axes
  g.append("g")
    .attr("transform", `translate(0,${innerHeight})`)
    .call(d3.axisBottom(xScale));

  g.append("g")
    .call(d3.axisLeft(yScale));

  // 5. Data binding
  g.selectAll("circle")
    .data(data)
    .join("circle")
    .attr("cx", d => xScale(d.x))
    .attr("cy", d => yScale(d.y))
    .attr("r", 5)
    .attr("fill", "steelblue");
}

Common Patterns

Bar Chart

const xScale = d3.scaleBand()
  .domain(data.map(d => d.category))
  .range([0, innerWidth])
  .padding(0.1);

g.selectAll("rect")
  .data(data)
  .join("rect")
  .attr("x", d => xScale(d.category))
  .attr("y", d => yScale(d.value))
  .attr("width", xScale.bandwidth())
  .attr("height", d => innerHeight - yScale(d.value))
  .attr("fill", "steelblue");

Line Chart

const line = d3.line()
  .x(d => xScale(d.date))
  .y(d => yScale(d.value))
  .curve(d3.curveMonotoneX);

g.append("path")
  .datum(data)
  .attr("fill", "none")
  .attr("stroke", "steelblue")
  .attr("stroke-width", 2)
  .attr("d", line);

Pie Chart

const pie = d3.pie().value(d => d.value);
const arc = d3.arc()
  .innerRadius(0)
  .outerRadius(Math.min(width, height) / 2 - 20);

g.selectAll("path")
  .data(pie(data))
  .join("path")
  .attr("d", arc)
  .attr("fill", (d, i) => d3.schemeCategory10[i]);

Interactivity

Tooltips

const tooltip = d3.select("body").append("div")
  .attr("class", "tooltip")
  .style("visibility", "hidden");

circles
  .on("mouseover", (event, d) => {
    tooltip.style("visibility", "visible")
      .html(`Value: ${d.value}`);
  })
  .on("mousemove", (event) => {
    tooltip
      .style("top", (event.pageY - 10) + "px")
      .style("left", (event.pageX + 10) + "px");
  })
  .on("mouseout", () => {
    tooltip.style("visibility", "hidden");
  });

Zoom & Pan

const zoom = d3.zoom()
  .scaleExtent([0.5, 10])
  .on("zoom", (event) => {
    g.attr("transform", event.transform);
  });

svg.call(zoom);

Transitions

// Basic
circles.transition()
  .duration(750)
  .attr("r", 10);

// Staggered
circles.transition()
  .delay((d, i) => i * 50)
  .duration(500)
  .attr("cy", d => yScale(d.value));

Scales Reference

| Scale Type | Use Case | |------------|----------| | scaleLinear | 연속 수치 | | scaleLog | 지수 데이터 | | scaleTime | 시간/날짜 | | scaleBand | Bar chart 카테고리 | | scaleOrdinal | 색상 매핑 | | scaleSequential | 연속 색상 |

Color Schemes

// Categorical
d3.schemeCategory10  // 10 colors
d3.schemeTableau10   // Tableau 10

// Sequential
d3.interpolateBlues
d3.interpolateYlOrRd

// Diverging
d3.interpolateRdBu

Best Practices

  1. Data Validation: null/NaN 체크
  2. Responsive: ResizeObserver 사용
  3. Performance: 1000+ 요소 시 Canvas 고려
  4. Accessibility: ARIA labels 추가
  5. Clean Up: 이전 렌더링 제거

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/interactive-d3-js-visualization-ms47vopr/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/interactive-d3-js-visualization-ms47vopr' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/interactive-d3-js-visualization-ms47vopr/download' --output '.skill-downloads/interactive-d3-js-visualization-ms47vopr/SKILL.md.part' && mv '.skill-downloads/interactive-d3-js-visualization-ms47vopr/SKILL.md.part' '.skill-downloads/interactive-d3-js-visualization-ms47vopr/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Glob, Grep, Edit, Write

Extrait original : Setup
// npm
import * as d3 from 'd3';

// CDN
<script src="https://d3js.org/d3.v7.min.js"></script>

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/interactive-d3-js-visualization-ms47vopr/SKILL.md' && test -s '.skill-downloads/interactive-d3-js-visualization-ms47vopr/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/d3-viz' && cp -R '.skill-downloads/interactive-d3-js-visualization-ms47vopr' '.claude/skills/d3-viz'

Cursor
test -f '.skill-downloads/interactive-d3-js-visualization-ms47vopr/SKILL.md' && test -s '.skill-downloads/interactive-d3-js-visualization-ms47vopr/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/d3-viz' && cp -R '.skill-downloads/interactive-d3-js-visualization-ms47vopr' '.cursor/skills/d3-viz'

Codex
test -f '.skill-downloads/interactive-d3-js-visualization-ms47vopr/SKILL.md' && test -s '.skill-downloads/interactive-d3-js-visualization-ms47vopr/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/d3-viz' && cp -R '.skill-downloads/interactive-d3-js-visualization-ms47vopr' '.agents/skills/d3-viz'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/interactive-d3-js-visualization-ms47vopr'

openskills read 'interactive-d3-js-visualization-ms47vopr'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/interactive-d3-js-visualization-ms47vopr/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires