前言
- 本篇来学习下ECharts中交互API的使用
全局ECharts对象
- 全局 echarts 对象是引入 echarts.js 文件之后就可以直接使用的
- init :初始化ECharts实例对象,使用主题
- registerTheme:注册主题
echarts.registerTheme('CustomTheme', { "color": [ "#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de", "#3ba272", "#fc8452", "#9a60b4", "#ea7ccc" ],
- registerMap:注册地图数据
- connect:实现多图关联,传入联动目标为 EChart 实例,支持数组
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>全局ECharts对象</title> <!-- cdn方式 引入echarts.js文件 --> <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1/dist/echarts.min.js"></script> <!-- 引入自定义主题--> <script src="lib/CustomTheme.js"></script> <!--引入jquery--> <script src="lib/jquery.min.js"></script> </head> <body> <!-- 准备一个呈现图表的盒子 --> <div id='app' style="width: 600px;height: 400px;border: 1px solid deeppink"></div> <div id='map' style="width: 600px;height: 400px;border: 1px solid blueviolet"></div> <script> // init 初始化echarts实例对象 并设置主题 var myCharts = echarts.init(document.getElementById('app'), 'CustomTheme') var xDataArr = ['张三', '李四', '王五', '大明白', '小糊涂'] // x轴数据 var yDataArr = [88, 92, 63, 77, 94] // y轴数据 var option = { toolbox: { feature: { saveAsImage: {} } }, xAxis: { type: 'category', data: xDataArr }, yAxis: { type: 'value' }, series: [ { name: '分数', type: 'bar', // 图表类型 bar:柱状图 line:折线图 pie:饼图 data: yDataArr, markPoint: { // 标记最大最小值 data: [ {type: 'max', name: '最大值'}, {type: 'min', name: '最小值'} ] }, markLine: { data: [ { type: 'average', name: '平均值' } ] }, label: { show: true, // 柱状图显示数值 rotate: 30, // 值旋转角度 }, barWidth: '30%' // 柱的宽度 } ] } myCharts.setOption(option) var myCharts2 = echarts.init(document.getElementById("map")) // json/map/china.json 为本地的地图矢量数据 $.get('json/map/china.json', function (chinaJson) { console.log(chinaJson) // chinaJson 地图矢量数据 // registerMap :注册地图矢量数据 echarts.registerMap('chinaMap', chinaJson) var option = { geo: { type: 'map',// map是一个固定的值 类型 map: 'chinaMap',//chinaMap需要和registerMap中的第一个参数保持一致 roam: true, // 设置允许缩放以及拖动的效果 label: { show: true // 展示标签 }, zoom: 1, // 设置初始化的缩放比例 } } myCharts2.setOption(option) // connect : 实现多图关联 echarts.connect([myCharts, myCharts2]) }) </script> </body> </html>
- 多图联动保存的图片
echartsInstance对象
eChartsInstance 对象是通过 echarts.init 方法调用之后得到的实例对象
- setOption
- 设置或修改图表实例的配置项以及数据
- 多次调用setOption方法
合并新的配置和旧的配置
增量动画
- resize : 重新计算和绘制图表
window.onresize = function(){ myChart.resize(); }
- on/off:绑定或者解绑事件处理函数
- 鼠标事件
- 常见事件: ‘click’、‘dblclick’、‘mousedown’、‘mousemove’、‘mouseup’
- ECharts 事件
- legendselectchanged、‘datazoom’、‘pieselectchanged’、‘mapselectchanged’
- dispatchAction: 主动触发某些行为, 使用代码模拟用户的行为
- clear:清空当前实例,会移除实例中所有的组件和图表;清空之后可以再次 setOption
- dispose:销毁实例;销毁后实例无法再被使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>echartsInstance对象</title> <!-- cdn方式 引入echarts.js文件 --> <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1/dist/echarts.min.js"></script> <script src="lib/jquery.min.js"></script> </head> <body> <div id='app' style="width: 600px;height:400px"></div> <button id="btn1">触发行为</button> <button id="btn2">clear</button> <button id="btn3">setOption</button> <button id="btn4">dispose</button> <script> var mCharts = echarts.init(document.getElementById("app")) var pieData = [ { name: 'pass', value: 80 }, { name: 'fail', value: 10 }, { name: 'skip', value: 5 }, { name: 'error', value: 5 } ] var option = { legend: { data: ['pass', 'fail', 'skip', 'error'] }, tooltip: { show: true }, series: [ { type: 'pie', data: pieData, label: { show: true, formatter: function (arg) { console.log(arg) return arg.data.name + '\n' + arg.percent + '%' } }, selectedMode: 'single', // multiple 多选 single 单选 selectedOffset: 30,// 偏移距离 // radius: ['50%', '80%'] } ] } mCharts.setOption(option) // 事件监听 mCharts.on('click', function (arg) { console.log(arg) }) mCharts.off('click') // 解绑click的事件 // echarts事件变化 mCharts.on('legendselectchanged', function (arg) { console.log('legendselectchanged', arg) }) $('#btn1').click(function () { // 模拟用户的行为 mCharts.dispatchAction({ type: 'highlight', seriesIndex: 0, // 图表索引 dataIndex: 1 // 数据的索引 图表中的哪一项 }) mCharts.dispatchAction({ type: 'showTip', seriesIndex: 0, dataIndex: 0 }) }) $('#btn2').click(function () { // 清空图表的实例 mCharts.clear() }) $('#btn3').click(function () { // 重新设置option mCharts.setOption(option) }) $('#btn4').click(function () { // 销毁mCharts mCharts.dispose() }) </script> </body> </html>