x
1
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 = [
13
{"title":"Revenue","subtitle":"US$, in thousands","ranges":[150,225,300],"actual":270,"target":250},
14
{"title":"Profit","subtitle":"%","ranges":[20,25,30],"actual":23,"target":26},
15
{"title":"Order Size","subtitle":"US$, average","ranges":[350,500,600],"actual":100,"target":550},
16
{"title":"New Customers","subtitle":"count","ranges":[1400,2000,2500],"actual":1650,"target":2100},
17
{"title":"Satisfaction","subtitle":"out of 5","ranges":[3.5,4.25,5],"actual":3.2,"target":4.4}
18
];
19
var chart = new G2.Chart({
20
id: 'c1',
21
forceFit: true,
22
height: 450,
23
plotCfg: {
24
margin: [100, 150]
25
}
26
});
27
chart.legend(false); // 不展示图例
28
var y = 0;
29
var yGap = 0.1;
30
for(var i=0, l = data.length; i < l; i++) {
31
var ranges = data[i].ranges;
32
var view = chart.createView({
33
index: i,
34
start: {
35
x: 0,
36
y: y
37
},
38
end: {
39
x: 1,
40
y: y + yGap
41
}
42
});
43
view.source([data[i]], {
44
actual: {
45
min: 0,
46
max: ranges[2],
47
nice: false
48
},
49
target: {
50
min: 0,
51
max: ranges[2],
52
nice: false
53
}
54
});
55
view.coord().transpose();
56
view.axis('target', false);
57
view.axis('actual', {
58
position: 'right',
59
title: null
60
});
61
view.axis('title', {
62
title: null
63
});
64
view.point().position('title*target').color('#5b0101').shape('line').size(12).style({
65
lineWidth: 2
66
});
67
view.interval().position('title*actual').color('#5b0101').size(15);
68
view.guide().rect([-1, 0], [1, ranges[0]], {
69
fill: '#e96e33',
70
fillOpacity: 0.5
71
});
72
view.guide().rect([-1, ranges[0]], [1, ranges[1]], {
73
fill: '#f9ca47',
74
fillOpacity: 0.5
75
});
76
view.guide().rect([-1, ranges[1]], [1, ranges[2]], {
77
fill: '#88bb34',
78
fillOpacity: 0.5
79
});
80
y += yGap + 0.125;
81
}
82
chart.render();
83
</script>
84
</body>
85
</html>
86
子弹图
子弹图通过线性表达方式展示单一数据源各阶段精确的数据信息、某项数据与不同目标的校对结果等。