echarts相关用法
echarts使用步骤
- 必须有一个具有宽高的div
- 引入echarts.min.js
- JS代码
- 初始化echarts(写法固定)
let 变量 = echarts.init(盒子)
- 配置echarts图表(配置项决定了图表的样子)
let 配置项 = {}
- 根据配置项,创建图表(写法固定)
变量.setOption(配置项)
- 初始化echarts(写法固定)
1 | <body> |
echarts常用的配置项
title - 标题
xAxis - X轴配置
yAxis - Y轴配置
series - 系列数据
- 格式是 [{ 一个图形 }, { 一个图形 }, { 一个图形 }]
color - 颜色配置
- 格式 [‘red’, ‘green’, ‘blue’]
- 格式 [‘red’, ‘green’, ‘渐变色’] ----- 渐变色传送门
grid - 坐标轴区域的配置,比如配置距离顶部 100 像素
legend - 图例配置
- 需要设置series中每一项的 name 属性才行。
tooltip - 鼠标移入提示
- 默认是鼠标移入图形才能提示
- 将 trigger: ‘axis’ 之后,鼠标输到轴上即可提示。
1 | let option = { |
折线图
写基础的步骤
1 | // ------------------- 折线图 -------------------------------- |
套用官方示例
官方示例代码如下:
1 | let option = { |
修改配置
-
增加标题(title)
-
- 标题文本(text):2022全学科薪资走势
- 距离顶部(top):15
- 距离左侧(left):10
- 文字大小(textStyle > fontSize):16
-
X 轴(xAxis)
-
- 标签文字(data):[‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’, ‘7月’, ‘8月’, ‘9月’, ‘10月’, ‘11月’, ‘12月’]
- 标签文字颜色(axisLabel > color):#999
- 轴线颜色(axisLine > lineStyle > color):#ccc
- 轴线类型(axisLine > lineStyle > type):点划线
-
Y 轴(yAxis)
-
- Y 轴分割线类型((splitLine > lineStyle > type)):点划线
-
鼠标移入提示(tooltip)
-
- (trigger: ‘axis’)设置为鼠标移入轴线提示
-
网格(grid)
-
- 距离顶部:20%
-
颜色(color)
-
- 渐变颜色,参考链接:https://echarts.apache.org/zh/option.html#color
- 0%处的颜色:#499FEE
- 100%处的颜色:#5D75F0
-
系列数据(series)
-
- 数据:[9000, 12000, 15000, 13000, 10000, 18000, 14000, 10000, 12000, 13000, 15000, 19000]
- 平滑曲线
- 线条粗细:6
- 拐点空心圆:10
- 区域面积渐变:
-
-
- 0处颜色:#499FEE
- 0.8处颜色:rgba(255,255,255,0.2)
- 1处颜色:rgba(255,255,255,0)
- 渐变色设置参考:https://echarts.apache.org/zh/option.html#color
-
饼图(右上角)
写基础的步骤
1 | function classSalaryChart () { |
套用官方示例
修改配置
-
增加标题(title)
-
- 标题文本:班级薪资分布
- 距离顶部:15
- 距离左侧:10
- 文字大小:16
-
系列数据(series)
-
- 去掉了 avoidLabelOverlap 和 emphasis 两个配置
- 系列数据名 name:班级薪资分布
- 环形内外圈半径 radius:[‘50%’, ‘64%’]
- 每一项样式 itemStyle(不需要改):
-
-
- 边框颜色:#fff
- 边框大小:2
- 扇形内外圆角半径:10
-
-
- 文字标签 label(不需要改):不显示
- 视觉引导线 labelLine(不需要改):不显示
- 数据:
1 | [ |
-
图例(legend)
-
- 左右居中
- 距离底部:6%
-
鼠标移入提示(tooltip)(不需要改)
-
- 鼠标移入每一项上提示
-
颜色(color)
-
- [‘#FDA224’, ‘#5097FF’, ‘#3ABCFA’, ‘#34D39A’]
饼图(左下角)
写基础的步骤
1 | function sexSalaryChart () { |
复制上一个饼图并修改
复制之后
- 删除 series中的 itemStyle
- 删除 series中的 label
- 删除 series中的 baleLine
- 复制 series 中的一个小对象,并修改圆心点
- center: [‘50%’, ‘30%’] center: [‘50%’, ‘70%’]
- 删除图例 legend
标题设置:
- 一个标题,使用一个 对象
{}
表示 - 多个标题,使用一个 数组
[{标题1}, {标题2}, {标题3}]
表示
1 | title: [ |
地图
准备工作
要做地图,除了引入 echarts.min.js 之外,还需要地区的配置文件。
比如做中国地图,需要引入 china.js 才可以。
更多地图做法,参考群里的 7 分钟视频。
1 | // ------------------- 地图 ---------------------------------- |
配置
修改配置
-
标题(title)
-
- 标题文字:籍贯分布
- 距离顶部:10
- 距离左边:10
- 文字大小:16
-
系列数据(series)
-
- 系列数据名(name):籍贯分布
- 类型(type: ‘map’) – 表示地图
- map: ‘china’ — 表示使用中国地图(到这一步,就可以显示中国地图了)
- 通过 label 设置每个区域(每个省)的名字
-
-
- (show: true)显示省的名字
- (fontSize)文字大小:10
- (color)字体颜色:rgba(0,0,0,0.7)
-
-
- 通过 itemStyle 设置每个区域(每个省)默认的颜色
-
-
- borderColor 区域边界线(省界线)颜色:rgba(0, 0, 0, 0.2)
- areaColor 区域颜色:#E0FFFF
-
-
- 通过 emphasis 设置高亮状态(鼠标移入)的样式
-
-
- areaColor 区域颜色:#34D39A
- borderWidth 区域边框(省界线)大小:0
- shadowBlur 阴影模糊大小:20
- shadowOffsetX shadowOffsetY 阴影偏移:0
- shadowColor 阴影颜色:rgba(0, 0, 0, 0.5)
-
-
- 使用data设置每个省的数据
1 | // 因为用地图表示每个省有几名同学 |
然后series中,通过 data 指定使用这些数据
1 | series: [ |
-
鼠标移入提示(tooltip)
-
- 鼠标放到每个省的时候,进行提示
- 自定义提示的格式为:
河北:20 位学员
这样的格式 - 提示框边框透明
- 提示框背景色:rgba(0,0,0,0.5)
- 文字颜色:#fff
-
视觉映射组件(visualMap)
-
- 视觉映射组件,根据每个区域数据的大小来修改每个区域的颜色
- 显示视觉映射组件
- max min 约定最大值20,最小值0
- text: [20, 0] 视觉映射组件开头和结尾文字也是 20和0
- 组件距离左边40,距离下边20
- inRange: { color: [‘’, ‘’] } 从小到大的颜色分别为:#fff 和 #0075F0
作业:柱状图要求
修改配置
网格(grid)
-
- 距离左边:70
- 距离顶部:30
- 距离右边:30
- 距离下边:50
X 轴(xAxis)
-
- 轴线颜色:#ccc
- 轴线类型:点划线
- 文字颜色:#999
Y 轴(yAxis)
-
- Y轴分割线:点划线
鼠标移入提示(tooltip)
-
- 鼠标移入柱子提示
系列数据(series)
-
- 因为有两个柱子,所以需要两份数据
1 | series: [ |
颜色(color)
-
- 因为有两个柱子,所以颜色也使用数组,并且每一个柱子使用渐变色
- 第1个柱子:0处的颜色#34D39A,1处的颜色rgba(52,211,154,0.2)
- 第2个柱子:0处的颜色#499FEE,1处的颜色rgba(73,159,238,0.2)
作业:自己做一个自己家乡的地图(做市级地图,参考群里的视频)
创建并切换到login
插件
val()
作用一:获取表单各项的值,语法: let data = val(表单)
作用二:修改的时候,可以做数据回填,语法: val(表单, 数据)
message
- message.success(‘成功的提示’)
- message.error(‘失败的提示’)
- message.confirm(‘标题’, ‘提示内容’, 函数) ---- 删除学员的时候用
注册代码
1 | // 注册业务:获取输入框的账号、密码,提交给接口即可; |
登录功能
因为登录的业务逻辑和注册差不多。
所以,复制上述注册的代码 到 login.html 中。
并修改以下内容:
- 接口地址修改为:
http://ajax-api.itheima.net/login
- 登录成功后,跳转到:
location.href = './index.html'
token的使用
具体到代码:
- 登录成功之后,存储token
1 | localStorage.setItem('token', result.data.data.token) |
- 首页请求接口数据的时候,带请求头
1 | // ==================================================================================== |
axios配置请求根路径和请求头
axios配置好请求根路径之后,后续所有的请求,都不用写请求根路径了。
配置语法:axios.defaults.baseURL = 'http://ajax-api.itheima.net'
只要有上述这行代码,后面所有的请求,都不用加 请求根路径了。
项目中,由于每个html文件,都引入了 common.js 的文件,所以,我们可以选择把 统一的配置,放到 common.js 中。
同理,也可以全局统一配置请求头,代码如下。
common.js 中的代码:
1 | // 上面这个代码处理过度动画(默认加上不用管) |
响应拦截器处理401错误
拦截器分为
- 请求拦截器
- 响应拦截器
参考地址:https://www.axios-http.cn/docs/interceptors
项目中,如果是token 的问题(不是忘记携带了,就是token过期了),接口都会响应 401 状态码。
所以,添加响应拦截器,判断响应状态码是否是401,如果是,则跳转到登录。
在common.js中,添加如下代码:
1 | // 添加响应拦截器 |
首页数据处理
概览区处理
略
折线图数据处理
- 原来 那次 调用函数,注释掉
- 等接口响应数据之后,再调用函数,并且传递实参
lineChart(year)
- lineChart 函数里面:
- X轴数据: data: a.map(item => item.month)
- series数据:data: a.map(item => item.salary)
饼图数据处理
- 原来 那次 调用函数,注释掉
- 等接口响应数据之后,再调用函数,并且传递实参
-
classSalaryChart(salaryData)
– 右上角饼图sexSalaryChart(salaryData)
– 左下角
- classSalaryChart(右上角函数)
- series中, data: a.map(item => {
// return { value: 20, name: ‘一万以下’ }
return { value: item.g_count + item.b_count, name: item.label }
})
- series中, data: a.map(item => {
- sexSalaryChart(左下角函数)
- series中,data: a.map(item => {
// return { value: 20, name: ‘一万以下’ }
return { value: item.g_count, name: item.label }
})
- series中,data: a.map(item => {
柱状图数据处理
-
原来 那次 调用函数,注释掉
-
等接口响应数据之后,再调用函数,并且传递实参
groupSalaryChart(groupData)
-
默认展示1组数据
- X轴的人名
data: a[1].map(item => item.name)
- series中的两组数据
a[1].map(item => item.hope_salary)
和a[1].map(item => item.salary)
- X轴的人名
-
点击之后,做排他效果
-
点击之后,设置对应组的数据,并重新创建图表
1 | // 给柱状图上面的 8 个按钮,注册click事件 |
地图数据处理
- 原来 那次 调用函数,注释掉
- 等接口响应数据之后,再调用函数,并且传递实参
mapChart(provinceData)
- 函数中,在模板数据(mapData)之后,加入下面的代码即可
1 | // 在模板数据、接口返回的数据 之后。融合两部分数据 |