Echarts的初始化使用
-
引入什么的就不多说了,普通的js脚本怎么引入echarts就怎么引入 -
大概初始化的步骤
-
- 获取DOM(用于绘制表格)
- 依据获取的DOM对象初始化echarts(使得这个DOM对象用于展示图表数据)
- 书写echarts配置对象
- 第二步返回的echarts对象调用setOption方法并传入第三步书写的配置对象
-
别忘记设置Dom容器的宽高了(css设置即可) -
好像如果是同一个echarts实例化对象,再次调用setOption方法,不会造成图表全部重新绘制,只会造成部分修改
this.table1.setOption({
title:{
text:this.showTitle+"趋势"
},
})
示例代码
<!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>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
#table1{
width: 500px;
height: 500px;
}
</style>
</head>
<body>
<div id="table1"></div>
<div id="table2"></div>
<script src="./js/echarts.js"></script>
<script>
var dom1 = document.querySelector("#table1")
var table1 = echarts.init(dom1);
var options1 = {
title: {
text: "数据可视化",
subtext: "echarts的基本使用",
textStyle: {
color: 'hotpink',
fontStyle: 'italic'
},
subtextStyle:{
color:'yellow'
},
left: 'center'
},
xAxis: {
data: ["衣服", "直播", "游戏", "电影"],
},
yAxis: {
},
series:[
{
type:'bar',
data:[20,30,26,24],
color:'red'
}
]
}
table1.setOption(options1);
</script>
</body>
</html>
效果图
Echarts的setOption配置对象
grid 设置echarts的对于容器的位置 官网API
- left,right,top,bottom设置为0可以使得表格占满容器
Echarts的series的配置对象
-
设置渐变填充折线图
-
关键配置参数areaStyle 官方API -
官方渐变参考代码 -
代码 series:[
{
type:"line",
data:[45,35,25,87,45,89],
itemStyle:{
opacity:0,
color:'purple'
},
areaStyle:{
color:{
type: 'line',
x: 0,
y: 0,
r: 0,
colorStops: [{
offset: 0, color: '#ce9dce'
},
{
offset: 1, color: '#dcb9dc'
}
],
global: false
}
}
}
],
反向柱形图(也就是X轴和Y轴反过来显示)
-
原来的x轴变为了y轴,原来的y轴变为了x轴 -
只需要设置yAxis对象当中的type:"category" 和x轴的数据放置在yAxis当中,然后把x部分删除 -
代码 <!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>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
#table1,#table2{
width: 500px;
height: 500px;
}
</style>
</head>
<body>
<div id="table1"></div>
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.2/echarts.min.js"></script>
<script>
var dom1 = document.querySelector("#table1")
var table1 = echarts.init(dom1);
var options1 = {
title: {
text: "数据可视化",
subtext: "echarts的基本使用",
textStyle: {
color: 'hotpink',
fontStyle: 'italic'
},
subtextStyle:{
color:'yellow'
},
left: 'center'
},
xAxis: {
},
yAxis: {
type:'category',
data: ["衣服", "直播", "游戏", "电影"],
},
series:[
{
type:'bar',
data:[20,30,26,24],
color:'red'
}
],
}
table1.setOption(options1);
</script>
</body>
</html>
-
效果图
反向柱形图实现防进度条的静态图
效果
代码
var table1 = echarts.init(this.$refs.dom);
table1.setOption({
xAxis:{show:false,min:0,max:100},
yAxis:{show:false,type:"category"},
grid:{
left:0,
right:0,
top:0,
bottom:0
},
series:[
{
type:'bar',
barWidth:10,
color:"#92b532",
data:[78],
}
]
})
一个容器显示多个图表
代码
<!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>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
#dom1{
width: 500px;
height: 500px;
}
</style>
</head>
<body>
<div id="dom1"></div>
<script src="./js/echarts.js"></script>
<script>
var table1 = echarts.init(document.querySelector("#dom1"))
var options = {
title: {
text: "月销售数据",
subtext: "销售人员必看!",
left:'center',
textStyle: {
color: 'red'
},
subtextStyle: {
color: 'yellow'
},
},
xAxis:{
data:['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
},
yAxis:{},
series:[
{
type:"bar",
data:[125,200,150,68,52,103,146],
color:"#5470c6",
},
{
type:'line',
data:[125,200,150,68,52,103,146],
color:'red',
},
{
type:'pie',
radius:20,
data:[
{value:125,name:'Mon'},
{value:200,name:'Tue'},
{value:150,name:'Wed'},
{value:68,name:"Thu"},
{value:52,name:'Fri'},
{value:103,name:'Sat'},
{vaue:146,name:'Sun'}
],
width:200,
height:200,
left:200,
top:50
}
]
}
table1.setOption(options)
</script>
</body>
</html>
效果图
dataset数据集的使用
-
我理解的数据集就是series 当中的每一个对象所对应的数据,方便我们统一处理数据 -
主要注意的是:
- 如果我们设置了dataset数据集,而没有在series当中的对象当中使用encode去指明映射那一列
- ECharts 就按最常见的理解进行默认映射:X 坐标轴声明为类目轴,默认情况下会自动对应到 dataset.source 中的第一列;
- 三个柱图系列,一一对应到 dataset.source 中后面每一列。(也就是按照series当中对象的顺序依次对应)
-
dataset数据集基本使用简略代码 option = {
dataset: {
source: [
[12, 44, 55, 66, 2],
[23, 6, 16, 23, 1],
]
},
series: {
type: 'xxx',
encode: {
x: 0
}
}
}
-
具体可参考Echarts官网数据集概念
代码
<!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>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
#dom1{
width: 500px;
height: 500px;
}
</style>
</head>
<body>
<div id="dom1"></div>
<script src="./js/echarts.js"></script>
<script>
var table1 = echarts.init(document.querySelector("#dom1"))
var data = [
['Mon','Mon',125,45,35],
['Tue','Tue',54,53,15],
['Wed','Wed',85,86,38],
['Thu','Thu',79,86,88],
['Fri','Fri',103,138,49],
['Sat','Sat',187,251,86],
['Sun','Sun',56,154,78],
]
var options = {
dataset:{
source:data
},
title: {
text: "月销售数据",
subtext: "销售人员必看!",
left:'center',
textStyle: {
color: 'red'
},
subtextStyle: {
color: 'yellow'
},
},
xAxis:{
data:['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
},
yAxis:{},
series:[
{
type:"bar",
color:"#5470c6",
encode:{
y:2
}
},
{
type:'line',
color:'red',
encode:{
y:3
}
},
{
type:'pie',
radius:20,
encode:{
itemName:1,
value:4
},
width:200,
height:200,
left:100,
top:50
}
]
}
table1.setOption(options)
</script>
</body>
</html>
效果图
Echarts内置组件的使用
-
使用也很简单,只需要在配置对象当中添加即可,比如toolbox component var options = {
...
toolbox:{},
...
}
toolbox
toolbox:{
show:true,
feature:{
saveAsImage:{title:"保存为图片"},
restore:{title:"配置项还原"},
dataView:{title:"数据视图"},
dataZoom:{title:{zoom:"数据区域缩放",back:"还原数据区域"}},
magicType:{
title:{line:"切换为折线图",bar:"切换为柱形图"},
type:["line",'bar']
}
}
}
-
效果图
dataZoom
-
配置对象当中添加 dataZoom:{ } 即可 -
效果图
legend
-
图例的数据数组。数组项通常为一个字符串,每一项代表一个系列的 name(如果是饼图,也可以是饼图单个数据的 name) -
示例 var options = {
...
series:[
{name:"柱形图",...},
{name:"折线图",...},
{name:"饼图",...},
],
legend:{
data:["柱形图","折线图","饼图"]
},
...
}
-
效果图
其他一些常用的配置项目
设置提示 tooltip
双坐标轴-Y轴
- 如果需要设置多个Y轴,则配置对象当中
yAxis 从{ } 改为 [ {…},{…} ] - 系列当中的对象设置为哪一个y轴需要设置
yAxisIndex 属性
代码
<!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>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
#dom1 {
width: 800px;
height: 400px;
}
</style>
</head>
<body>
<div id="dom1"></div>
<script src="./js/echarts.js"></script>
<script>
var table1 = echarts.init(document.querySelector("#dom1"))
table1.setOption({
title: {
text: "双坐标"
},
xAxis: {
type: 'category',
data: ['游戏', '直播', '农业', '服饰'],
},
yAxis: [
{
axisLine: {
show: true
},
axisTick: {
show: true
}
},
{
axisLine: {
show: true
},
axisTick: {
show: true
}
}
],
series: [
{
yAxisIndex:0,
type: 'bar',
data: [20, 35, 48, 80],
},
{
yAxisIndex:1,
type: 'scatter',
data: [88, 99, 124, 200],
color: 'red'
}
]
})
</script>
</body>
</html>
-
效果图
圆滑折线图
-
series当中的对象添加smooth:true 即可 table.setOption({
...
series:[
{
type:"line",
smooth:true,
}
]
...
})
-
效果图
添加事件监控
import echarts from "echarts";
var table1 = echarts.init(this.$refs.dom1);
table1.on('mousemove',()=>{
let {name,value} = params;
table1.setOption({
title:{
text:name,
subtext:value
}
})
});
import {throttle} from "lodash/throttle";
table1.on('mousemove',throttle((params)=>{
let {name,value} = params;
table1.setOption({
title:{
text:name,
subtext:value
}
})
},20));
-
返回的参数params 的值 {
componentType: string,
seriesType: string,
seriesIndex: number,
seriesName: string,
name: string,
dataIndex: number,
data: Object,
dataType: string,
value: number|Array,
color: string,
info: *
}
其他图
实例(Instance)
- 实例是指在同一个容器所绘制所有的图表的统称。每一个图表实例中可以多含多种图类型,每一个图表实例必须单独占用一个DOM节点。
系列(series)
- 系列是指图表的类型(如柱形图、饼图、折线图等),在一个图表实例中可以存在多个图表系列。
组件(component)
- 组件是指图表的各个组件部分,如标题、X轴、Y轴,工具栏提示等。
|