const nodes = [ { id: "Start", type: "circle", x: 100, y: 50 }, { id: "Process", type: "rect", x: 100, y: 150 }, { id: "Decision", type: "diamond", x: 100, y: 250 } ]; d3.select("#chart") .selectAll("g.node") .data(nodes) .enter() .append("g") .attr("class", "node") .attr("transform", d => `translate(${d.x},${d.y})`);
const links = [{ source: "Start", target: "Process" }, { source: "Process", target: "Decision" }]; const lineGenerator = d3.line() .x(d => d.x) .y(d => d.y) .curve(d3.curveStepAfter); d3.select("#chart") .selectAll("path.link") .data(links) .enter() .append("path") .attr("d", d => { const sourceNode = nodes.find(n => n.id === d.source); const targetNode = nodes.find(n => n.id === d.target); return lineGenerator([sourceNode, targetNode]); });
d3.curveStepAfter
曲线函数实现直角连接线,符合流程图规范。企业业务流程建模
d3-hierarchy
模块实现多层次组织结构可视化软件开发流程图
d3-zoom
实现无限画布缩放医疗决策支持系统
d3-transition
展示病情判断逻辑结构化数据标记
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Dataset", "name": "流程图数据模型", "description": "符合BPMN 2.0标准的流程节点定义" } </script>
移动端适配
d3-selection
的触摸事件支持window.innerWidth
动态调整节点间距d3-drag
实现焦点管理引用说明
[1] D3.js官方文档, Mike Bostock, https://d3js.org
[2] Web内容可访问性指南(WCAG 2.1), W3C
[3] 百度搜索优质内容指南, 百度站长平台
[4] 信息可视化设计规范, ISO/IEC 30122-1:2016