带动画完成图

描述:当前是关于Echarts图表中的 示例。
 
            let angle = 0; //角度,用来做简单的动画效果的
            let value = 12;
option = {
    backgroundColor:'#000',
                title: {
                    text: value + "%",
                    x: "center",
                    y: "center",
                    textStyle: {
                        fontSize: 24,
                        color: "#FF4953"
                    }
                },
                series: [
                    {
                        name: "内线",
                        type: "custom",
                        coordinateSystem: "none",
                        renderItem: function(params, api) {
                            return {
                                type: "arc",
                                shape: {
                                    cx: api.getWidth() / 2,
                                    cy: api.getHeight() / 2,
                                    r:
                                        Math.min(
                                            api.getWidth(),
                                            api.getHeight()
                                        ) / 2.3,
                                    startAngle: ((0 + angle) * Math.PI) / 180,
                                    endAngle: ((90 + angle) * Math.PI) / 180
                                },
                                style: {
                                    stroke: "#FF4953",
                                    fill: "transparent",
                                    lineWidth: 1.5
                                },
                                silent: true
                            };
                        },
                        data: [0]
                    },
                    {
                        name: "内线",
                        type: "custom",
                        coordinateSystem: "none",
                        renderItem: function(params, api) {
                            return {
                                type: "arc",
                                shape: {
                                    cx: api.getWidth() / 2,
                                    cy: api.getHeight() / 2,
                                    r:
                                        Math.min(
                                            api.getWidth(),
                                            api.getHeight()
                                        ) / 2.3,
                                    startAngle: ((180 + angle) * Math.PI) / 180,
                                    endAngle: ((270 + angle) * Math.PI) / 180
                                },
                                style: {
                                    stroke: "#FF4953",
                                    fill: "transparent",
                                    lineWidth: 1.5
                                },
                                silent: true
                            };
                        },
                        data: [0]
                    },
                    {
                        name: "外线",
                        type: "custom",
                        coordinateSystem: "none",
                        renderItem: function(params, api) {
                            return {
                                type: "arc",
                                shape: {
                                    cx: api.getWidth() / 2,
                                    cy: api.getHeight() / 2,
                                    r:
                                        Math.min(
                                            api.getWidth(),
                                            api.getHeight()
                                        ) / 2.1,
                                    startAngle:
                                        ((270 + -angle) * Math.PI) / 180,
                                    endAngle: ((40 + -angle) * Math.PI) / 180
                                },
                                style: {
                                    stroke: "#FF4953",
                                    fill: "transparent",
                                    lineWidth: 1.5
                                },
                                silent: true
                            };
                        },
                        data: [0]
                    },
                    {
                        name: "外线",
                        type: "custom",
                        coordinateSystem: "none",
                        renderItem: function(params, api) {
                            return {
                                type: "arc",
                                shape: {
                                    cx: api.getWidth() / 2,
                                    cy: api.getHeight() / 2,
                                    r:
                                        Math.min(
                                            api.getWidth(),
                                            api.getHeight()
                                        ) / 2.1,
                                    startAngle: ((90 + -angle) * Math.PI) / 180,
                                    endAngle: ((220 + -angle) * Math.PI) / 180
                                },
                                style: {
                                    stroke: "#FF4953",
                                    fill: "transparent",
                                    lineWidth: 1.5
                                },
                                silent: true
                            };
                        },
                        data: [0]
                    },
                    {
                        name: "线头点",
                        type: "custom",
                        coordinateSystem: "none",
                        renderItem: function(params, api) {
                            let x0 = api.getWidth() / 2;
                            let y0 = api.getHeight() / 2;
                            let r =
                                Math.min(api.getWidth(), api.getHeight()) / 2.1;
                            let point = getCirlPoint(x0, y0, r, 90 + -angle);
                            return {
                                type: "circle",
                                shape: {
                                    cx: point.x,
                                    cy: point.y,
                                    r: 5
                                },
                                style: {
                                    stroke: "#FF4953",
                                    fill: "#FF4953"
                                },
                                silent: true
                            };
                        },
                        data: [0]
                    },
                    {
                        name: "线头点",
                        type: "custom",
                        coordinateSystem: "none",
                        renderItem: function(params, api) {
                            let x0 = api.getWidth() / 2;
                            let y0 = api.getHeight() / 2;
                            let r =
                                Math.min(api.getWidth(), api.getHeight()) / 2.1;
                            let point = getCirlPoint(x0, y0, r, 270 + -angle);
                            return {
                                type: "circle",
                                shape: {
                                    cx: point.x,
                                    cy: point.y,
                                    r: 5
                                },
                                style: {
                                    stroke: "#FF4953", //绿
                                    fill: "#FF4953"
                                },
                                silent: true
                            };
                        },
                        data: [0]
                    },
                    {
                        name: "当月任务故障率",
                        type: "pie",
                        radius: ["80%", "60%"],
                        silent: true,
                        clockwise: true,
                        startAngle: 90,
                        z: 0,
                        zlevel: 0,
                        label: {
                            normal: {
                                position: "center"
                            }
                        },
                        data: [
                            {
                                value: value,
                                name: "",
                                itemStyle: {
                                    normal: {
                                        color: "#FF4953"
                                    }
                                }
                            },
                            {
                                value: 100 - value,
                                name: "",
                                label: {
                                    normal: {
                                        show: false
                                    }
                                },
                                itemStyle: {
                                    normal: {
                                        color: "#FAC1D0"
                                    }
                                }
                            }
                        ]
                    },
                    {
                        name: "",
                        type: "gauge",
                        radius: "80%",
                        center: ["50%", "50%"],
                        startAngle: 0,
                        endAngle: 359.9,
                        splitNumber: 8,
                        hoverAnimation: true,
                        axisTick: {
                            show: false
                        },
                        splitLine: {
                            length: "26%",
                            lineStyle: {
                                width: 3,
                                color: "#061740"
                            }
                        },
                        axisLabel: {
                            show: false
                        },
                        pointer: {
                            show: false
                        },
                        axisLine: {
                            lineStyle: {
                                opacity: 0
                            }
                        },
                        detail: {
                            show: false
                        },
                        data: [
                            {
                                value: 0,
                                name: ""
                            }
                        ]
                    }
                ]
            };
            
            function getCirlPoint(x0, y0, r, angle) {
                let x1 = x0 + r * Math.cos((angle * Math.PI) / 180);
                let y1 = y0 + r * Math.sin((angle * Math.PI) / 180);
                return {
                    x: x1,
                    y: y1
                };
            }
            function draw() {
                angle = angle + 3;
                myChart.setOption(option);
            }
            setInterval(function() {
                draw();
            }, 100);