用代码绘制:用JS或PHP绘制连接节点的图形


Drawing with code: Rendering a graph of connected nodes in JS or PHP

由于我的视力障碍,我完全不擅长画画。因此,我想用我擅长的东西来画一幅画。

具体地说,我想在我的项目中创建一个组件图,以及它们如何相互关联,或者我的数据库的ERM。

我对PHP和JavaScript(浏览器和NodeJS)充满信心。谁能给我推荐一个库、框架或类似的东西,让我把这样的结构可视化?谢谢你!

检查D3工具包(www.d3js.org)。你可以这样做

创建节点和节点之间的链接:

    nodes=[
    {name:"Mass", symbol:"m", unit:"kg", group:1}, 
    {name:"Time", symbol:"t", unit:"s", group:1}, 
    {name:"Length", symbol:"d", unit:"m", group:1},
    {name:"Force", symbol:"F", unit:"N", group:3, formula:"F=m.a"}, 
    {name:"Velocity", symbol:"v", unit:"m/s", group:2, formula:"v=d/t"}, 
    {name:"Acceleration", symbol:"a", unit:"m/(s.s)", group:2, formula:"a=v/d"},
    {name:"Work", symbol:"W", unit:"J", group:3, formula:"W=F.d"}, 
    {name:"Momentum", symbol:"p", unit:"kg.m/s", group:2, formula:"p=m.v"}, 
    {name:"Impulse", symbol:"I", unit:"N.s", group:2, formula:"I=F.t"},
    {name:"Energy (k)", symbol:"E", unit:"J", group:3, formula:"Ek=0.5m.v.v"}, 
    {name:"Power", symbol:"P", unit:"W", group:3, formula:"P=W/t"}, 
    {name:"Pressure", symbol:"p", unit:"Pa", group:3, formula:"p=F/A"},
    {name:"Area", symbol:"A", unit:"m.m", group:4, formula:"A=d*d"}, 
    {name:"Volume", symbol:"V", unit:"m.m.m", group: "4", formula:"V=A*d"}, 
    {name:"Frequency", symbol:"f", unit:"Hz", group:4, formula:"f=1/t"}
    ],
    // the relations shown can be calculated using
    // formulas from either 1 or 2 other quantities
    links=[
    {"source":1,"target":4,"value":1}, {"source":2,"target":4,"value":1}, // velocity
    {"source":2,"target":5,"value":1}, {"source":4,"target":5,"value":1}, // acceleration
    {"source":0,"target":3,"value":1}, {"source":5,"target":3,"value":1}, // force
    {"source":4,"target":7,"value":1}, {"source":3,"target":7,"value":1}, // momentum
    {"source":2,"target":6,"value":1}, {"source":3,"target":6,"value":1}, // work
    {"source":0,"target":9,"value":1}, {"source":4,"target":9,"value":1}, // energy
    {"source":2,"target":12,"value":1}, // area 
    {"source":2,"target":13,"value":1}, {"source":12,"target":13,"value":1}, // volume
    {"source":12,"target":11,"value":1}, {"source":3,"target":11,"value":1}, // pressure
    {"source":1,"target":10,"value":1}, {"source":6,"target":10,"value":1}, // power
    {"source":3,"target":8,"value":1}, {"source":1,"target":8,"value":1}, // impulse
    {"source":1,"target":14,"value":1}
    ];