graph.html 3.8 KB
Newer Older
L
lang 已提交
1 2 3 4 5 6
<html>
    <head>
        <meta charset="utf-8">
        <script src="esl.js"></script>
        <script src="config.js"></script>
        <script src="lib/jquery.min.js"></script>
L
lang 已提交
7
        <script src="lib/dat.gui.min.js"></script>
L
lang 已提交
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
    </head>
    <body>
        <style>
            html, body, #main {
                width: 100%;
                height: 100%;
                margin: 0;
            }
        </style>
        <div id="main"></div>
        <script>

            require([
                'echarts',

                'echarts/parser/gexf',

                'echarts/chart/graph',

                'echarts/component/title',
                'echarts/component/legend',
                'echarts/component/geo',
                'echarts/component/tooltip',
                'echarts/component/dataRange'
            ], function (echarts, gexf) {

                var chart = echarts.init(document.getElementById('main'), null, {
                    renderer: 'canvas'
                });

                $.get('./data/les-miserables.gexf', function (xml) {
                    var graph = gexf.parse(xml);
L
lang 已提交
40 41 42 43 44 45
                    var categories = [];
                    for (var i = 0; i < 9; i++) {
                        categories[i] = {
                            name: '类目' + i
                        };
                    }
L
lang 已提交
46
                    graph.nodes.forEach(function (node) {
L
lang 已提交
47
                        node.itemStyle = null;
L
lang 已提交
48
                        node.value = node.symbolSize;
L
lang 已提交
49
                        node.label.normal.show = node.symbolSize > 30;
L
lang 已提交
50
                        node.category = node.attributes['modularity_class'];
L
lang 已提交
51 52
                    });
                    chart.setOption({
L
lang 已提交
53
                        tooltip: {},
L
lang 已提交
54
                        legend: [{
L
lang 已提交
55
                            // selectedMode: 'single',
L
lang 已提交
56 57 58
                            data: categories.map(function (a) {
                                return a.name;
                            })
L
lang 已提交
59 60 61 62
                        }],
                        dataRange: {
                            max: 100,
                            inRange: {
63
                                colorSaturation: [1, 0.3]
L
lang 已提交
64 65
                            }
                        },
L
lang 已提交
66
                        animationDurationUpdate: 1500,
L
lang 已提交
67
                        animationEasingUpdate: 'quinticInOut',
L
lang 已提交
68 69
                        series : [
                            {
L
lang 已提交
70
                                name: 'Les Miserables',
L
lang 已提交
71
                                type: 'graph',
L
lang 已提交
72
                                layout: 'none',
L
lang 已提交
73
                                data: graph.nodes,
L
lang 已提交
74
                                links: graph.links,
L
lang 已提交
75
                                categories: categories,
L
lang 已提交
76
                                roam: true,
L
lang 已提交
77 78 79 80 81 82 83 84 85 86
                                label: {
                                    normal: {
                                        position: 'right'
                                    }
                                },
                                lineStyle: {
                                    normal: {
                                        curveness: 0.3
                                    }
                                }
L
lang 已提交
87 88 89
                            }
                        ]
                    });
L
lang 已提交
90 91

                    var config = {
L
lang 已提交
92
                        layout: 'none'
L
lang 已提交
93 94 95 96 97 98 99 100 101 102 103 104
                    };

                    var gui = new dat.GUI();
                    gui.add(config, 'layout', ['none', 'circular'])
                        .onChange(function (value) {
                            chart.setOption({
                                series: [{
                                    name: 'Les Miserables',
                                    layout: value
                                }]
                            });
                        });
L
lang 已提交
105
                });
L
lang 已提交
106
            });
L
lang 已提交
107 108 109
        </script>
    </body>
</html>