随着大数据的发展,数据统计在很多应用中显得不可或缺,echarts 作为一款基于 JavaScript 的数据可视化图表库,也成为了前端开发的必备技能,下面我们一起来用 echarts 开发一个学生数据统计的柱形图。
在开始答题前,你需要在线上环境终端中键入以下命令,下载并解压所提供的文件。
wget https://labfile.oss.aliyuncs.com/courses/7835/echarts.zip && unzip echarts.zip && rm echarts.zip
下载完成之后的目录结构如下:
├── echarts.js
└── index.html
你可以参考下图中的步骤访问项目:
打开控制台,我们会发下如下报错:
在 echars 图标中,x 轴和 y 轴无论存不存在数据都必须要定义。这个报错主要是因为没有定义 x 轴引起的。
index.html
中的 js 部分,效果如下:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>echarts 柱形图</title>
<script src="./echarts.js"></script>
</head>
<body>
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的 dom,初始化 echarts 实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '学生成绩统计'
},
tooltip: {},
legend: {
data: ['成绩']
},
// x 轴
xAxis: {
data: ['张三', '李四', '王五', '贺八', '杨七', '陈九']
},
// y 轴
yAxis: {
type: 'value'
},
series: [
{
name: '成绩',
type: 'bar',
data: [55, 90, 65, 70, 80, 63]
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>echarts 柱形图</title>
<script src="./echarts.js"></script>
</head>
<body>
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '学生成绩统计'
},
tooltip: {},
legend: {
data: ['成绩']
},
// TODO:待补充修改代码
//x轴
xAxis: {
data: ['张三', '李四', '王五', '贺八', '杨七', '陈九']
},
// y轴
yAxis:{
type:'value'
},
series: [
{
name: '成绩',
type: 'bar',
data: [55, 90, 65, 70, 80, 63]
},
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
详细解释:
<!DOCTYPE html>
:这是 HTML5 的文档类型声明,告诉浏览器使用 HTML5 标准来解析页面。<html lang="en">
:表示文档使用的语言是英语(en
)。<head>
部分: <meta charset="UTF-8">
:设置页面的字符编码为 UTF-8,以支持多种语言和特殊字符。<meta http-equiv="X-UA-Compatible" content="IE=edge">
:用于设置 Internet Explorer 浏览器的兼容性模式,确保使用最新的渲染引擎。<meta name="viewport" content="width=device-width, initial-scale=1.0">
:用于设置视口的宽度和初始缩放比例,主要用于响应式设计,使页面在不同设备上有更好的显示效果。<title>echarts 柱形图</title>
:定义页面的标题,会显示在浏览器的标题栏中。<script src="./echarts.js"></script>
:引入 Echarts 库的 JavaScript 文件,文件名为 echarts.js
,通过相对路径 ./echarts.js
引入,该文件包含了 Echarts 的核心功能。<body>
部分: <div id="main" style="width: 600px;height:400px;"></div>
:创建一个 id
为 main
的 div
元素,作为 Echarts 图表的容器,通过内联样式设置其宽度为 600px
,高度为 400px
。<script type="text/javascript">
:在页面中嵌入 JavaScript 代码。 var myChart = echarts.init(document.getElementById('main'));
:使用 Echarts 的 init
方法,将 id
为 main
的 div
元素作为容器,初始化一个 Echarts 实例。var option = {...};
:创建一个名为 option
的对象,包含了 Echarts 图表的各种配置信息。 title
:定义图表的标题,这里的 text
属性设置为 '学生成绩统计'
,将在图表上方显示该标题。tooltip
:设置鼠标悬停在图表元素上时显示的提示信息,这里使用默认设置,未添加具体的提示内容。legend
:设置图例,data
属性中的 ['成绩']
表示图表中使用的系列名称,这里只有一个系列,即学生成绩。xAxis
:设置 x
轴的信息。 data: ['张三', '李四', '王五', '贺八', '杨七', '陈九']
:将 x
轴的数据设置为学生的姓名列表,这些姓名将显示在 x
轴上。yAxis
:设置 y
轴的信息。 type: 'value'
:将 y
轴的类型设置为数值轴,用于显示学生的成绩值,因为成绩是数值类型的数据。series
:定义图表的数据系列。 name: '成绩'
:系列的名称,与 legend
中的数据项相对应。type: 'bar'
:指定图表的类型为柱状图。data: [55, 90, 65, 70, 80, 63]
:包含了每个学生对应的成绩数据,这些数据将根据 x
轴上的学生姓名显示为相应的柱形高度。myChart.setOption(option);
:将 option
对象中的配置信息应用到 Echarts 实例 myChart
上,从而显示出 Echarts 柱形图。echarts.js
是百度开发的一款开源的、功能强大的数据可视化库,它能够以直观、美观的方式展示数据,帮助用户更好地理解和分析数据。无论是简单的统计图表,还是复杂的商业数据展示,都可以使用 echarts.js
来实现。
2.1 丰富的图表类型
2.2 强大的交互功能
2.3 高度可定制化
3.1 数据处理
echarts.js
首先会对用户提供的数据进行处理和解析,将其转换为内部数据结构。对于不同类型的图表,会根据配置对数据进行不同的处理。例如,在柱状图中,会根据 xAxis
和 yAxis
的配置将数据映射到相应的坐标轴上,确定柱子的位置和高度;在饼图中,会计算各部分数据在整体中的比例,确定扇区的角度。3.2 图形绘制
echarts.js
使用 HTML5 的 Canvas 元素进行图形绘制。它会在初始化时创建一个 Canvas 元素,并通过 JavaScript 的 Canvas API 进行绘制。fillRect
绘制柱状图的柱子,moveTo
和 lineTo
绘制折线图的线条,arc
绘制饼图的扇区等。<rect>
表示矩形、<circle>
表示散点、<path>
表示折线等。3.3 交互处理
echarts.js
会监听各种用户事件,如鼠标的点击、移动、滚轮滚动等。当用户触发这些事件时,根据配置和当前状态,执行相应的操作。4.1 引入文件
<script>
标签引入 echarts.js
文件,例如:<script src="echarts.js"></script>
4.2 初始化图表
echarts.init
方法将一个 HTML 元素(通常是一个 <div>
)初始化为 Echarts 图表容器。例如:var myChart = echarts.init(document.getElementById('chart-container'));
4.3 配置图表
var option = {
title: {
text: '示例图表'
},
tooltip: {},
xAxis: {
type: 'category',
data: ['A', 'B', 'C', 'D']
},
yAxis: {
type: 'value'
},
series: [
{
type: 'bar',
data: [10, 20, 30, 40]
}
]
};
4.4 显示图表
setOption
方法将配置对象应用到图表实例上,生成并显示图表:myChart.setOption(option);
large
模式,提高渲染性能。例如:var myChart = echarts.init(document.getElementById('chart-container'), null, {
renderer: 'canvas',
useDirtyRect: true
});
dataZoom
范围,避免不必要的数据显示,减少渲染压力。echarts.js
会持续更新,带来新的功能和性能优化。使用时需关注官方网站的更新信息,以保证使用最新的功能和修复可能的漏洞。三、工作流程 ▶️
<!DOCTYPE html>
,并识别出这是一个 HTML5 页面。<head>
部分,设置字符编码,加载外部的 JavaScript 文件 ./js/index.js
。<body>
中的 <script>
部分时,开始执行其中的 JavaScript 代码。getRandomNum(1, 30, 3)
函数,开始生成 1 到 30 之间的 3 个不重复随机数。 arr
。while
循环,不断生成随机数,直到数组长度达到 3 个。Math.random()
生成一个 0 到 1 的随机浮点数,通过 (max - min + 1)
调整范围,Math.floor()
取整并加上 min
得到最终的随机数。document.write()
输出结果。getRandomNum(1, 100, 10)
函数,生成 1 到 100 之间的 10 个不重复随机数,重复上述步骤。 😎小总结:
这段代码结合了 HTML 和 JavaScript 实现了一个简单的随机数生成器。HTML 部分负责页面的结构和调用 JavaScript 函数,JavaScript 部分的 getRandomNum
函数实现了生成指定范围和数量的不重复随机数的功能。通过循环和条件判断确保随机数的不重复性,最终将结果输出到页面上。