1 | <!DOCTYPE html>
|
2 | <html lang="en">
|
3 |
|
4 | <head>
|
5 | <meta charset="UTF-8">
|
6 | <meta name="viewport" content="width=device-width, initial-scale=1.0">
|
7 | <meta http-equiv="X-UA-Compatible" content="ie=edge">
|
8 | <meta name="geometry" content="diagram">
|
9 | <link rel="stylesheet" href="./assets/common.css">
|
10 | <title>Interval Chart(X)</title>
|
11 | </head>
|
12 |
|
13 | <body>
|
14 | <div id="canvas"></div>
|
15 | <div style="width: 100%;text-align: center;">
|
16 | </div>
|
17 | <script src="./assets/jquery-3.2.1.min.js"></script>
|
18 | <script src="./assets/data-set.min.js"></script>
|
19 | <script src="./assets/g2.min.js"></script>
|
20 | <script src="../build/g2-brush.js"></script>
|
21 | <script>
|
22 | $.getJSON('./data/top2000.json', data => {
|
23 | const ds = new DataSet();
|
24 | const dv = ds.createView('test')
|
25 | .source(data)
|
26 | .transform({
|
27 | as: [ 'count' ],
|
28 | groupBy: [ 'release' ],
|
29 | operations: [ 'count' ],
|
30 | type: 'aggregate'
|
31 | });
|
32 |
|
33 | const chart = new G2.Chart({
|
34 | container: 'canvas',
|
35 | forceFit: true,
|
36 | height: window.innerHeight
|
37 | });
|
38 | chart.source(dv);
|
39 | chart.scale({
|
40 | count: {
|
41 | alias: 'top2000 唱片总量'
|
42 | },
|
43 | release: {
|
44 | tickInterval: 5,
|
45 | alias: '唱片发行年份'
|
46 | }
|
47 | });
|
48 | chart.interval()
|
49 | .position('release*count')
|
50 | .color('#e50000');
|
51 |
|
52 | chart.render();
|
53 |
|
54 | new Brush({
|
55 | canvas: chart.get('canvas'),
|
56 | chart,
|
57 | type: 'X',
|
58 | onBrushstart() {
|
59 | chart.hideTooltip();
|
60 | },
|
61 | onBrushmove() {
|
62 | chart.hideTooltip();
|
63 | }
|
64 | });
|
65 | chart.on('plotdblclick', () => {
|
66 | chart.get('options').filters = {};
|
67 | chart.repaint();
|
68 | });
|
69 | });
|
70 | </script>
|
71 | </body>
|
72 |
|
73 | </html>
|
74 |
|