效果预览
本次实现的是一个饼图,蓝色科技背景色,星球转动效果 + 荧光显示。
实现思路
大致实现思路:
- 初始化 ECharts 图表:
- 页面加载完成后,使用
echarts.init
方法初始化图表实例myChart
。
- 页面加载完成后,使用
- 准备数据:
- 定义
trafficWay
数组,存储不同类型的请假数据,包括名称和请假天数。
- 定义
- 定义颜色数组:
- 定义
color
数组,存储不同系列的颜色值。
- 定义
- 生成图表数据:
- 使用循环为
data
和data2
数组填充数据,每个数据项包含请假天数、名称和样式配置。
- 使用循环为
- 配置图表选项:
- 定义
option
对象,设置图表的全局配置,包括背景色、颜色、图例、系列等。
- 定义
- 图例配置:
- 在
legend
配置中,设置了图例的位置、图标形状、文字样式等。
- 在
- 自定义系列渲染:
- 使用
renderItem
方法自定义系列的渲染逻辑,绘制弧线和点。
- 使用
- 辅助函数:
getCirlPoint
函数用于计算圆上某点的坐标,用于绘制圆上的点。
- 动画效果:
draw
函数用于更新图表的angle
变量,实现动画效果。使用setInterval
定时调用draw
函数。
- 设置图表选项:
- 调用
myChart.setOption(option)
将配置项应用到图表上。
- 调用
- 定时刷新图表:
- 使用
setInterval
定时执行draw
函数,刷新图表的动画效果。
- 使用
- 样式定义:
- 在
<style>
标签中定义了.EChartBox
类的样式,设置了图表容器的宽度和高度。
- 在
整体来看,代码实现了一个具有动画效果的图表,其中包含了多个自定义系列,用于展示不同类型的请假天数。图表的图例根据 series
中的 name
自动生成,并通过 legend
配置项进行样式设置。动画效果通过改变角度 angle
并重新设置图表选项来实现。
关键代码展示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="../reset.css">
<style>
.EChartBox {
width: 800px;
height: 600px;
}
</style>
</head>
<body>
<!-- 散点图容器 -->
<div id="ECharts" class="EChartBox"></div>
<!-- 引入 ECharts 图表库 -->
<script src="./echarts-5.2.0.js"></script>
<script>
window.onload = function () {
// 初始化 ECharts 图表
var myChart = echarts.init(document.getElementById('ECharts'));
// 定义图表数据
var trafficWay = [
{ name: '病假', value: 20 },
{ name: '事假', value: 1 },
// ... 其他数据项
];
// 定义颜色数组
var color = ['#2A8BFD', '#BAFF7F', // ... 其他颜色值];
// 准备图表数据
var data = trafficWay.map(item => ({
value: item.value,
name: item.name,
itemStyle: {
normal: {
color: color[trafficWay.indexOf(item)],
// ... 其他样式设置
}
}
}));
// 图表配置项
var option = {
// ... 全局配置项
series: [
{
name: '请假类型',
type: 'pie',
data: data,
// ... 其他配置项
},
// ... 其他系列配置项
]
};
// 设置图表选项
myChart.setOption(option);
};
</script>
</body>
</html>