askill
example-d3-animation

example-d3-animationSafety 95Repository

Learn how to use D3.js with Helios for data visualization. Use when creating charts, graphs, or data-driven animations.

0 stars
1.2k downloads
Updated 2/20/2026

Package Files

Loading files...
SKILL.md

D3.js Animation

Integrate D3.js with Helios by driving D3 scales and attributes using the Helios frame/time state.

Quick Start

import { Helios } from '@helios-project/core';
import * as d3 from 'd3';

const helios = new Helios({ duration: 5, fps: 60 });
const svg = d3.select('#chart');

// Data
const data = [10, 20, 30, 40, 50];

// Setup D3
const x = d3.scaleLinear().domain([0, 50]).range([0, 500]);
const bars = svg.selectAll('rect').data(data).enter().append('rect')
  .attr('height', 20)
  .attr('y', (d, i) => i * 25);

// Animate
helios.subscribe(({ currentFrame, fps }) => {
  const time = currentFrame / fps;

  // Update D3 attributes based on time
  bars.attr('width', d => x(d) * Math.min(1, time));
});

Key Patterns

Frame-Driven Scales

Instead of using d3.transition(), use helios.subscribe() to update attributes on every frame. This ensures frame-perfect rendering and seeking.

helios.subscribe((state) => {
  const t = state.currentFrame / (state.duration * state.fps); // 0 to 1

  // Interpolate data
  const interpolatedData = data.map(d => d * t);

  // Re-bind and render
  path.datum(interpolatedData).attr('d', lineGenerator);
});

Common Issues

  • d3.transition(): Do NOT use d3.transition(). It relies on internal timers that won't sync with Helios's seek/render cycle. Always set attributes directly in the subscription callback.
  • Performance: For large datasets, consider using Canvas with D3 (d3-force + Canvas API) instead of SVG for better performance.

Source

  • Example: examples/d3-animation/

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

74/100Analyzed 3/2/2026

A solid technical skill showing how to integrate D3.js with Helios for frame-driven animations. Provides clear code examples, explains the key pattern (frame-driven scales vs d3.transition), and warns about common pitfalls. Located in dedicated skills folder with usage guidance. Missing some completeness (no installation instructions, limited examples) but the core concepts are well presented. Score benefits from good structure, clear when-to-use guidance, and being in a proper skills directory."

95
75
55
60
70

Metadata

Licenseunknown
Version-
Updated2/20/2026
PublisherBintzGavin

Tags

api