一、ECharts的特点
二、基本使用
第一步:引入echarts.js文件
第二步:准备呈现图标的盒子
第三步:初始化echarts实力对象:
let mCharts = echarts.init(document.querySelector('div'));//传递的dom元素 
//就是用来装echarts的框 
第四步:准备配置项
let option = { XAxis:{ type:'category', data:["小米","小红","小王"], yAxis:{ 
type:"value", }, series:[ { name:"语文", type:"bar", data:["70","80","90"] } ] } }
第五步:将配置项设置给echarts实例对象
mCharts.setOption(option); 
三、相关配置解释
●xAxis: 直角坐标系中的x轴
●yAxis: 直角坐标系中的y轴
●series: 系列列表。每个系列通过type决定自己的图表类型。
let option = { title:{ text:"成绩",//标题 link:"... ",//点击标题的链接 tsxtStyle:{ 
//主标题的文字风格 } }, XAxis:{ type:'category',//类目轴 data:["小米","小红","小王"], yAxis:{ 
type:"value",//数值轴 }, series:[//主要是配置给y轴的数据 { name:"语文", type:"bar",//图形 bar柱状图 
data:["70","80","90"] } ] } } 
四、七大图表
 
1.柱状图
柱状图常见效果:
标记:最大值 最小值 平均值
MarkPoint
Markline
let option = { title:{ text:"成绩",//标题 link:"... ",//点击标题的链接 tsxtStyle:{ 
//主标题的文字风格 } }, XAxis:{ type:'category',//类目轴 data:["小米","小红","小王"], yAxis:{ 
type:"value",//数值轴 }, series:[//主要是配置给y轴的数据 { name:"语文", type:"bar",//图形 bar柱状图 
marPoint:{ data:[ {type:"max",name:"最大值"}, {type:"min",name:"最小值"} ] } , 
markLine:{ data:[ {type:"average",name:"平均值"} ] } , data:["70","80","90"], } ] 
} } 
显示:数值显示 柱宽度
label barWidth 更改x和y的角色
series:[//主要是配置给y轴的数据 { name:"语文", type:"bar",//图形 bar柱状图 marPoint:{ data:[ 
{type:"max",name:"最大值"}, {type:"min",name:"最小值"} ] } , markLine:{//显示平均值 data:[ 
{type:"average",name:"平均值"} ] } , label:{ show:true, rotate:60,//旋转 
position:"top"//标签的位置 }, data:["70","80","90"], } ] 
通用配置
1. title 标题
文字样式 textStyle
let option ={ titel:{ text:"通用样式", textStyle:{ color:"red" }, borderWidth:5, 
borgerRadius:5, borderColor:"blue", //标题位置 left:10, } } 
2. tooltip 提示
let option ={ tooltip:{ //trgger: "item",//移动到柱状内部会显示的内容 trigger:"axis", 
triggerOn:"mouseover"//鼠标移入时显示,对应click 鼠标点击时显示 
//formatter:`{b}的成绩是{c}`//提示中显示的内容 formatter:function(arg){//可使用回调函数 return 
arg[0].name } } } 
3.toolbox 工具按钮
let option ={ toolbox:{ feature:{ //到处图片 saveAsImage:{}, //数据视图 呈现最原始的数据,并可以修改 
dataView:{}, //重置功能 restore:{}, //区域缩放 可还原 dataZoom:{}, // 动态图表中间切换 magicType:{ 
type:["bar","line"] }, } } } 
4.legend 图例
let option = { title:{ text:"成绩",//标题 link:"... ",//点击标题的链接 tsxtStyle:{ 
//主标题的文字风格 } }, XAxis:{ type:'category',//类目轴 data:["小米","小红","小王"], yAxis:{ 
type:"value",//数值轴 }, legend:{ data:["语文","数学"]//对应的标准为data中的字符串与 
//series中的那么值匹配 }, series:[//主要是配置给y轴的数据 { name:"语文", type:"bar",//图形 bar柱状图 
marPoint:{ data:[ {type:"max",name:"最大值"}, {type:"min",name:"最小值"} ] } , 
markLine:{ data:[ {type:"average",name:"平均值"} ] } , data:["70","80","90"], }, { 
name:"数学", type:"bar", data:["75","80","70"] } ] } } 
2.折线图
let option = { title:{ text:"成绩",//标题 link:"... ",//点击标题的链接 tsxtStyle:{ 
//主标题的文字风格 } }, XAxis:{ type:'category',//类目轴 data:["小米","小红","小王"], 
boundaryGap:false,//x轴紧挨边缘 }, yAxis:{ type:"value",//数值轴 scale:true//脱离0值比例 }, 
legend:{ data:["语文","数学"]//对应的标准为data中的字符串与 //series中的那么值匹配 }, 
series:[//主要是配置给y轴的数据 { name:"语文", type:"line",//图形 折线图 marPoint:{ data:[ 
{type:"max",name:"最大值"}, {type:"min",name:"最小值"} ] } , markLine:{ data:[ 
{type:"average",name:"平均值"} ] } , markArea:{ // 标注区间 data:[ [ 
{XAxis:'1月'},//开始值 {XAxis:'2月' },//结束值 ], [ {XAxis:'7月'},//开始值 {XAxis:'8月' 
},//结束值 ] ] }, areaStyle:{//填充风格 color:'red', }, smooth:true,//平滑的曲线 
lineStyle:{ color:'red',//线条颜色 type:'dashed',//线条形状 直线solid 点状虚线 }, 
data:["70","80","90"], }, { name:"数学", type:"bar", data:["75","80","70"] } ] } }
堆叠图
  let option = {             yAxis: {                 type: 'category', 
                data: xDataArr,             },             yAxis: { 
                type: 'value',                           }, 
            series:[                 {                     type:"line", 
                    data:data1, 
                    stack:"all",//堆叠 以数据小的为坐标 stack值要一样 
                    areaStyle:{},//填充风格                 },                 { 
                    type:"line",                     data:data2, 
                    stack:"all",//堆叠 以数据小的为坐标                     areaStyle:{}, 
                }             ]         } 
小结
➢基本的折线图
●基本的代码结构
●x轴和y轴的数据
●series中 的type设置为line
➢折线图常见效果
●最大值\最小值\平均值markPoint markLine markArea
●线条显示smooth lineStyle
●填充风格areaStyle
●紧挨边缘boundaryGap
●脱离0值比例scale
●堆叠图stack
➢折线图特点
折线图常用来分析数据随时间的变化趋势
3.散点图
// 散点图         let option = {             xAxis: { 
                type: "value",                 scale: true,             }, 
            yAxis: {                 type: "value", 
                scale: true,//脱离0值比例             },             serise: { 
                type: "scatter",//散点图 
                data: axisData,//axisData为二维数组             }         } 
散点图的常见效果:
气泡效果图--控制散点的大小和颜色
let option = {             xAxis: {                 type: "value", 
                scale: true,             },             yAxis: { 
                type: "value",                 scale: true,//脱离0值比例 
            },             serise: {                 // type: "scatter",//散点图 
                type: "effectScatter",//散点图 涟漪动画 
                rippleEffect: {                     scale: 10 // 涟漪动画大小 
                },                 showEffectOn: "",// render-每个散点渲染完后自动拥有涟漪效果  
                // emphasis-鼠标滑过时,出现的涟漪动画  
                data: axisData,//axisData为二维数组 
                symbolSize: function (arg) { 
                    // symbolSize可接受回调函数 
                    let height = arg[0]; 
                    let weight = arg[1]; 
                    let bmi = weight / (height * height); 
                    if (bmi > 28) {                         return 20 
                    } else {                         return 5 
                    }                 },                 itemStyle: { 
                    color: function (arg) { //设置气泡颜色 此时arg是一个对象 
                        let height = arg.data[0]; 
                        let weight = arg.data[1]; 
                        let bmi = weight / (height * height); 
                        if (bmi > 28) { 
                            return "red"                         } else { 
                            return "green"                         } 
                    }                 }             }         } 
小结
➢基本的散点图
●基本的代码结构
●x轴和y轴的数据, 是- -个二维数组
●series中的type设置为scatter
●xAxis和yAxis中的type设置 为value
➢散点图常见效果
●气泡图
涟漪效果
➢散点图特点
●散点图可以帮助我们推断出不同维数据之间的相关性
●散点图也经常用在地图的标注
4.直角坐标系的通用配置
柱状图,折线图,散点图 都是直角坐标系图
let option = { grid: {//控制图标的大小和位置                 show: true,//显示 
                borderWidth: 10,                 borderColor: "red", 
                left: 20,                 top: 20,                 width: 200, 
                hight: 200,             },             XAxis: { 
                type: 'category',//类目轴 
                data: ["小米", "小红", "小王"],             },             yAxis: { 
                type: "value",//数值轴              }, 
            series: [//主要是配置给y轴的数据                 { 
                    name: "语文",                     type: "bar",//图形 bar柱状图   
                    data: ["70", "80", "90"]                 }             ] 
        } 
配置
如果一个轴是类目轴,需要 配置data ,如果是数值轴,不需要配置data,它会自动在 series 中去找data
1: 网格 grid
grid是用来控制直角坐标系的布局和大小
x轴和y轴就是在grid的基础上进行绘制的
●显示grid
show
●grid的边框
borderWidth、borderColor
●grid的位 置和大小
left、
top、right、
bottom
width、height
2:坐标轴axis
坐标轴分为x轴和y轴
一-个grid中最多有两种位置的x轴和y轴
●坐标轴类型 type
value:数值轴,自动会从目标数据中读取数据
category:类目轴,该类型必须通过data设置类目数据
●显示位置position
xAxis:可取值为top或者bottom
yAxis:可取值为left或者right
 let option = {             XAxis: {                 type: 'category',//类目轴 
                data: ["小米", "小红", "小王"], 
                potion:top,//可取值为top或者bottom             }, 
            yAxis: {                 type: "value",//数值轴  
                potion:left,//可取值为left或者right             }, 
            series: [//主要是配置给y轴的数据                 { 
                    name: "语文",                     type: "bar",//图形 bar柱状图   
                    data: ["70", "80", "90"]                 }             ] 
        } 
3:区域缩放dataZoom
dataZoom用于区域缩放,对数据范围过滤, x轴和y轴都可以拥有
dataZoom是- -个数组,意味着可以配置多个区域缩放器
●类型type
slider:滑块
inside:内置,依靠鼠标滚轮或者双指缩放
●指明产生作用的轴
xAxisIndex:设置缩放组件控制的是哪个x轴,一般写0即可
yAxisIndex:设置缩放组件控制的是哪个y轴, -般写0即可
●指明初始状态的缩放情况
start:数据窗口范围的起始百分比
end:数据窗口范围的结束百分比
let option4 = {             dataZoom: [ 
                // dataZoom只有一个对象时,默认是x轴,如果不只一个就需要指明坐标轴                 { 
                    type: "slider",//表格下方的滑块控制缩放的区域 可滚动 
                    //type:"inside"//鼠标滚轮或者双击缩放 
                    xAxisIndex: 0                 },                 { 
                    type: "slider",//表格下方的滑块控制缩放的区域 可滚动 
                    //type:"inside"//鼠标滚轮或者双击缩放 
                    yAxisIndex: 0,                     start: 0, 
                    end: 50//百分之多少                 },             ],//区域缩放 
            toolbox: {                 feature: { 
                    dataZoom: {},//缩放区域                 }             }, 
            XAxis: {                 type: 'category',//类目轴 
                data: ["小米", "小红", "小王"],                 potion: top, 
            },             yAxis: {                 type: "value",//数值轴  
                potion: left,             },             series: [//主要是配置给y轴的数据 
                {                     name: "语文", 
                    type: "bar",//图形 bar柱状图   
                    data: ["70", "80", "90"]                 }             ] 
        } 
5.饼图
基本配置
// 饼图 value 为数组,数组中包含对象 
        // 对象中为name和vale [{name:"xx",value:"vv"},{name:"xx",value:"vv"}] 
        let pieData = [{ name: "x2x", value: 1220 }, { name: "xx2", value: 3220 }] 
        let option5 = {             series: [{ 
                type: 'pie',// 饼图                 data: pieData,             }] 
        } // 饼图常见效果         let option6 = {             series: [{ 
                type: 'pie',// 饼图                 data: pieData, 
                label: {//饼图文字显示                     show: true,//显示文字 
                    // formatter: "ii",//决定文字显示的内容 可接受回调函数 
                    formatter: function (arg) { 
                        // 饼图中的arg参数中有一个 percent参数 为所占百分比 
                        return arg.name + "平台花了" + arg.value + 
 "占" + arg.percent + "%"                     }                 }, 
                // radius:20,//饼图半径的设置                 // radius:"40%",//可设置百分比 
// 参照的是宽度和高度中的较小的一个值的一半的百分比设置                 // radius:["30%","75%"], 
//设置为圆环,第0个元素代表内圆半径,第2个元素为外远半径                 roseType:"radius", 
//蓝丁格尔图 设置每部分半径不同                 // selectedMode:"single",  
//选中的效果,能够选中的区域偏离圆点一小段距离                 selectedMode:"multiple", 
                selectedOffset:20,//设置偏离圆心的距离             }]         } 
小结
➢基本的饼图
●基本的代码结构
●数据是由name和value组成 的对象所形成的数组
●series中 的type设置为pie
●无须配置xAxis和yAxis
➢饼图常见效果
●显示文字的格式化
●圆环
●南丁格尔图
●选中效果
➢饼图特点
●饼图可以很好地帮助用户快速了解不同分类的数据的占比情况
6.地图
矢量地图的实现步骤
●ECharts最 基本的代码结构:
引入js文件, DOM容器,初始化对象,设置option
●准备中国的矢量地图json文件,放到json/map/的目录下
china.json
●使用Ajax获 取china.json
$.get("json/ map/china.json', function (chinaJson) {})
●在回调函数中往echarts全局对象注册地图的json数据
echarts.registerMap('chinaMap', chinaJson);
●在geo下设置
type:'map'
map:'
'chinaMap'
7.自适应
当浏览器的大小发生变化的时候,如果想让图表也能随之适配变化
●1. 监听窗口大小变化事件
●2.在事件 处理函数中调用ECharts实例对象的resize即可
window.onresize = function(){ myChart.resize(); } 
8.加载动画
ECharts已经内置好了加载数据的动画,我们只需要在合适的时机显示或者隐藏即可
●显示加载动画
mCharts.showLoading()
●隐藏加载动画
mCharts.hideLoading()