-
Notifications
You must be signed in to change notification settings - Fork 0
/
绘制数据比例饼图.html
53 lines (51 loc) · 1.16 KB
/
绘制数据比例饼图.html
1
2
3
4
5
6
7
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>绘制扇形</title>
<style>
canvas{
border: 1px solid black;
}
</style>
</head>
<body>
<canvas width="600" height="600">
</canvas>
<script>
var mycanvas = document.querySelector("canvas");
var ctx = mycanvas.getContext("2d");
var width = ctx.canvas.width;
var height = ctx.canvas.height;
var x0 = width/2;
var y0 = height/2;
// 随机获取颜色函数
var randomColor = function(){
var R = Math.floor(Math.random() * 256);
var G = Math.floor(Math.random() * 256);
var B = Math.floor(Math.random() * 256);
var RGB = "rgb("+R+","+G+","+B+")";
return RGB;
}
// 数据
data = [6,30,10,8];
var sum = eval(data.join("+")); //求和
var ratioList = [];
data.forEach(function(item, i) {
ratioList.push(item / sum);
});
var angle = Math.PI * 2;
var startAngle = 0;
var endAngle = 0;
ratioList.forEach(function(item, i) {
endAngle += angle * item;
ctx.beginPath();
ctx.moveTo(x0,y0);
ctx.arc(x0,y0,150,startAngle,endAngle);
ctx.fillStyle = randomColor();
ctx.fill();
startAngle += angle * item;
});
</script>
</body>
</html>