G2 图表示例
源码
g2-react
x
 
1
<!DOCTYPE html>
2
<html>
3
  <head>
4
    <meta charset="utf-8">
5
    <title>结构树</title>
6
    <script src="https://a.alipayobjects.com/jquery/jquery/1.11.1/jquery.js"></script>
7
    <script src="https://gw.alipayobjects.com/as/g/datavis/g2/2.3.13/index.js"></script>
8
  </head>
9
  <body>
10
    <div id="c1"></div>
11
    <script>
12
      var data = [{"name":"flare","children":[{"name":"analytics","children":[{"name":"cluster","children":[{"name":"AgglomerativeCluster","size":3938},{"name":"CommunityStructure","size":3812},{"name":"HierarchicalCluster","size":6714},{"name":"MergeEdge","size":743}]},{"name":"graph","children":[{"name":"BetweennessCentrality","size":3534},{"name":"LinkDistance","size":5731},{"name":"MaxFlowMinCut","size":7840},{"name":"ShortestPaths","size":5914},{"name":"SpanningTree","size":3416}]},{"name":"optimization","children":[{"name":"AspectRatioBanker","size":7074}]}]},{"name":"animate","children":[{"name":"Easing","size":17010},{"name":"FunctionSequence","size":5842},{"name":"interpolate","children":[{"name":"ArrayInterpolator","size":1983},{"name":"ColorInterpolator","size":2047},{"name":"DateInterpolator","size":1375},{"name":"Interpolator","size":8746},{"name":"MatrixInterpolator","size":2202},{"name":"NumberInterpolator","size":1382},{"name":"ObjectInterpolator","size":1629},{"name":"PointInterpolator","size":1675},{"name":"RectangleInterpolator","size":2042}]},{"name":"ISchedulable","size":1041},{"name":"Parallel","size":5176},{"name":"Pause","size":449},{"name":"Scheduler","size":5593},{"name":"Sequence","size":5534},{"name":"Transition","size":9201},{"name":"Transitioner","size":19975},{"name":"TransitionEvent","size":1116},{"name":"Tween","size":6006}]}]}];
13
      var Layout = G2.Layout;
14
      var Stat = G2.Stat;
15
      var chart = new G2.Chart({
16
        id: 'c1',
17
        forceFit: true,
18
        height: 450,
19
        plotCfg: {
20
          margin: [20,50]
21
        }
22
      });
23
      // 不显示title
24
      chart.tooltip({
25
        title: null
26
      });
27
      // 不显示图例
28
      chart.legend(false);
29
      // 使用layout,用户可以自己编写自己的layout
30
      // 仅约定输出的节点 存在 id,x,y字段即可
31
      var layout = new Layout.Tree({
32
        nodes: data
33
      });
34
      var nodes = layout.getNodes();
35
      var edges = layout.getEdges();
36
      // 首先绘制 edges,点要在边的上面
37
      // 创建单独的视图
38
      var edgeView = chart.createView();
39
      edgeView.source(edges);
40
      edgeView.coord().transpose(); //
41
      edgeView.axis(false);
42
      edgeView.tooltip(false);
43
      // Stat.link 方法会生成 ..x, ..y的字段类型,数值范围是 0-1
44
      edgeView.edge()
45
        .position(Stat.link('source*target',nodes))
46
        .shape('smooth')
47
        .color('#ccc');
48
      // 创建节点视图
49
      var nodeView = chart.createView();
50
      nodeView.coord().transpose(); //'polar'
51
      nodeView.axis(false);
52
      // 节点的x,y范围是 0,1
53
      // 因为边的范围也是 0,1所以正好统一起来
54
      nodeView.source(nodes, {
55
        x: {min: 0,max:1},
56
        y: {min: 0, max:1},
57
        value: {min: 0}
58
      });
59
      nodeView.point().position('x*y').color('steelblue').size(3).label('name', {
60
        offset: 5,
61
        labelEmit: true
62
      })
63
        .tooltip('name');
64
      chart.render();
65
    </script>
66
  </body>
67
</html>
68

结构树

正交布局的树图,展示的是Flare 软件包的子目录结构