D3.js 交互数据可视化
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/d3-viz。
技能介绍
要解决什么问题
业务里经常遇到「库能画柱状图,但布局、编码和交互都要按设计稿来」:力导向网络、弦图、地理投影、刷选缩放、过渡编排,Chart.js / ECharts 等标准方案要么做不到,要么改造成本很高。D3.js(Data-Driven Documents)的核心是把数据绑定到 DOM,用比例尺、布局与 selection 对每一个图形元素做精确控制,适合出版级、可探索的自定义可视化。
技能如何帮你落地
本技能按工程师常用路径组织内容,而不是罗列 API:
- 环境与集成:说明通过
d3命名空间使用模块,并区分两种模式——模式 A 直接 DOM 操作(复杂交互、过渡优先);模式 B 用 D3 算比例尺/布局,由 React/Vue/Svelte 等声明式渲染(简单图或团队习惯框架模板时)。 - 代码结构:绘图函数的标准骨架(尺寸、
margin、svg、比例尺、坐标轴、join数据更新),以及用ResizeObserver或容器测量实现响应式尺寸。 - 模式库:柱状图、折线图、散点图、热力图、饼图、弦图、力导向网络等示例思路,并覆盖工具提示、缩放平移、点击与
.transition()动画。 - 工程细节:数据校验与准备、大数据集(如超过约 1000 个 DOM 节点时考虑 canvas 或聚合)、可访问性与统一样式;附带比例尺速查与 FAQ(坐标轴不显示、过渡无效、响应式失效、性能)。
- 配套资源:
references/(模式、比例尺、配色)与assets/中的chart-template.js、interactive-template.js、sample-data.json可作为起点再按框架改写。
适用边界
- 适合:自定义视觉编码、复杂交互探索、图/网络/层次结构、地理可视化、需要平滑过渡的叙事型图表。
- 不适合或应换方案:纯 3D 场景请用 Three.js;若只需常规仪表盘且接受固定图表类型,可优先更轻量的图表库,再仅在关键视图引入 D3。
使用场景
- 产品内嵌分析页需力导向图展示实体关系,标准图表库无法按设计稿控制节点与边的样式与拖拽交互
- 运营复盘要在网页上做可缩放刷选的时间序列探索,需在单一 SVG 内精细编排坐标轴与过渡动画
- 研究报告要用弦图呈现类别间流量,并支持悬停提示与点击高亮,布局需自定义而非模板仪表盘
- 内部地理看板要用非默认地图投影展示区域指标,并随容器宽度用 ResizeObserver 重算比例尺与视图
适合人员
- 负责 React/Vue 业务看板的前端工程师,需在框架内混用 D3 比例尺与声明式渲染完成非标准图表
- 做深度报道或白皮书的数据记者/可视化编辑,需要出版级排版与逐元素样式而非通用主题图表
- 搭建内部分析工具的数据分析师,要为上千点规模的数据集设计缩放、提示与性能可接受的交互探索界面
- 维护开源或企业数据产品的全栈开发者,要按 SKILL 模板拆分绘图函数并排查坐标轴、过渡与响应式尺寸问题