用途:当数据决定图形标记、比例尺、布局、标签与动画时使用本技能;用于在时间维度上控制注意力,同时保持数据含义。D3 适合自定义可视编码、时间线、分布、层级、地理投影、流向与网络、稳定标识的数据连接,以及浏览器渲染视频中的确定性帧求值。常规图表组件已满足需求时优先用组件;数据已简化为少量数值时优先用运动合成器;不得用 D3 为虚构数字制造权威感。
主要能力:先建立数据与主张契约,记录问题、来源、总体、时间范围、分母、单位、缺失值、变换、不确定性、批准主张、画幅、时长与校验和。按比较任务选择编码:类别比较用有序条形或点图,时间变化用折线、阶梯、面积或小多图,分布用直方图等,关系用散点,部分整体用堆叠条,地理用投影地图,层级用树图,网络流用节点连线或桑基图。用 D3 比例尺映射定义域到值域,支持连续、顺序、发散、分位、阈值、序数、band、point、time 等家族;轴生成可读刻度;选择器 data(data, key) 与 join() 实现进入、更新、退出。
使用方式:示例比例尺代码为 const x = d3.scaleBand().domain(data.map((row) => row.category)).range([plotLeft, plotRight]).padding(0.22); 条形图长度编码通常从零开始。动画用于解释参照系、数据变化、关键比较、不确定性与最终记忆状态。固定媒体按请求帧计算视觉状态,示例:function renderFrame(frame, fps) { const raw = clamp01((frame - startFrame) / durationFrames); const progress = d3.easeCubicInOut(raw); bars.attr("y", (row) => d3.interpolateNumber(y(0), y(row.value))(progress)).attr("height", (row) => d3.interpolateNumber(0, y(0) - y(row.value))(progress)); } 要求无实时抓取、无挂钟时间依赖、随机布局需固定种子、字体稳定、支持乱序帧。
适用场景:纪录片插入、短视频证据卡、响应式图表变体、地图与网络层级可视化。限制:需记录模块版本并复核官方文档;无签订数据契约时应标记为探索性或阻止发布;不得静默修补缺失数据;色彩不能是唯一信息手段;需满足对比度要求;布局约束外的力导向需冻结后再动效;资料暂未提供具体收费与平台信息。