slides/webgl/asset/ec-demo/graph.html (80 lines of code) (raw):

<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <link rel="stylesheet" href="../common/reset.css"> </head> <body style="background: black"> <div id="main"></div> <script src="../common/echarts.min.js"></script> <script src="../common/jquery.min.js"></script> <script src="../common/echarts-gl.js"></script> <script src="../data/vivagraph.json.js"></script> <script> var chart = echarts.init(document.getElementById('main')); var nodes = []; var nodesMap = {}; var links = []; for (var i = 0; i < graphData.links.length;) { var source = graphData.links[i++] + ''; var target = graphData.links[i++] + ''; if (!nodesMap[source]) { nodes.push({ id: source }); nodesMap[source] = true; } if (!nodesMap[target]) { nodes.push({ id: target }); nodesMap[target] = true; } links.push({ source: source, target: target }); } chart.setOption({ title: { text: 'GPU Layout + 100 Steps', subtext: '\nNodes: 2121\n\nEdges: 6370', textStyle: { fontSize: 30, color: '#fff' }, subtextStyle: { fontSize: 20, color: '#fff' } }, series: [{ type: 'graphGL', roam: true, data: nodes, edges: links, forceAtlas2: { steps: 100, stopThreshold: 0.1, jitterTolerence: 10, scaling: 0.5, edgeWeight: [2, 1], edgeWeightInfluence: 1 }, lineStyle: { color: '#fff', opacity: 0.4 }, itemStyle: { color: '#fff' } }] }); console.log(nodes.length); console.log(links.length); window.onresize = chart.resize; </script> </body> </html>