一般绘制流程:
**
- 使用echarts首先需要在页面上引入echarts.min.js文件
例:
<script src="js/lib/echarts.min.js"></script>
- 页面上需要有一个盛放图表的容器,也就是div
例:
<div id="dataChart"></div>
js中得到这个div元素并初始化一个echarts实例 例:
var dataAnalysisChart = echarts.init(document.getElementById("dataChart"));
指定图表的配置项option,如图表标题、图例、系列、悬浮提示、x轴、y轴等
例:
var option = {title: {text: 'ECharts 入门示例'},tooltip: {},legend: {data:['销量']},xAxis: {data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]};
- 使用刚指定的配置项和数据显示绘制图表,利用setOption()方法,参数为上一步的配置项
例:
dataAnalysisChart.setOption(option);
页面上使用绘制流程:
**
实际使用时图表数据由后台生成,所以在实际使用echarts时的流程与一般绘制方法稍有不同,我总结了一套实际使用时的绘制流程标准,可根据具体情况做适当调整。
- 前面的步骤不变,依次是引入文件、设置图标div容器、初始化echarts实例
如果要求图表数据定时刷新,需要加入定时标志,如下:
var t1 = null;//动态请求图表数据时间间隔标志
定义一个方法,名字可以是setXXX,该方法用来向后台请求图表数据,并设置定时刷新、成功回调、失败回调等操作。此处的请求未使用框架封装的admin.req()方法,如需在使用该框架的系统里使用,替换即可。例:
function setRetiredBatteryQualityStatistics() {clearTimeout(t1); //清除定时任务$.ajax({url: "../../json/dataJson/data1.json",success: function(data) {var json = eval(data);setValues_1(json);//设置参数并绘制图表//成功:定时请求t1 = setTimeout(setRetiredBatteryQualityStatistics, 5000);},error: function() {layer.msg("请求数据失败!");//失败回显假数据$.getJSON(jsonUrl, function (data) {data = eval(data);setValues_1(data);});//失败定时请求t1 = setTimeout(setRetiredBatteryQualityStatistics, 1000);}});}
定义setValues_X方法,该方法用于将请求回来的后台数据格式化,变成图表配置项的数据格式,最常用的方法就是循环,例:
function setValues_1(json) {var params = {};//配置项参数var names = [];var lstm = [];var sy = [];var msl = [];var nqdc = [];var other = [];/*循环json数据 赋值上述数据*/for (var item in json) {var name = json[item].name;var value1 = json[item].value1;var value2 = json[item].value2;var value3 = json[item].value3;var value4 = json[item].value4;var value5 = json[item].value5;names.push(name);lstm.push(value1);sy.push(value2);msl.push(value3);nqdc.push(value4);other.push(value5);}//组装参数params.dataX = names;params.lstm = lstm;params.sy = sy;params.msl = msl;params.nqdc = nqdc;params.other = other;//清空图表区域retiredBatteryQualityStatistics.clear();//绘制柱状图retiredBatteryQualityStatistics.setOption(getRetiredBatteryQualityStatisticsOption(params), true);}
定义获取图表配置项的方法,该方法接收上一步格式化方法中定义的配置项参数,将配置项参数中的数据赋给option,返回这个option参数,并在格式化方法中调用。为使结构清晰,该方法可以单独定义在option.js文件中,option.js文件用来存放所有图表的配置项获取方法。例:
function getRetiredBatteryQualityStatisticsOption(params) {var option = {color: ['#486BBB', '#3AB8AB', '#C76E52', '#B04BC3', '#F9B80B'],tooltip: {trigger: 'axis',axisPointer: {type: 'shadow'}},legend: {x: 'center',top: 'bottom',icon: 'circle',itemWidth: 10,itemHeight: 10,textStyle: {color: '#FFFFFF'},data: ['磷酸铁锰', '三元', '锰酸锂', '镍氢电池', '其他']},grid: { //图表的位置top: '15%',left: '3%',right: '4%',bottom: '12%',containLabel: true},yAxis: [{name: '单位(吨)',nameTextStyle: {color: '#FFFFFF'},type: 'value',splitLine: {show: false},axisTick: {show: false},axisLine: {lineStyle: {color: 'rgba(78,255,215,0.4)'}},axisLabel: {color: 'rgba(255,255,255,0.5)'}}],xAxis: [{type: 'category',data: params.dataX,axisTick: {show: false},axisLine: {lineStyle: {color: 'rgba(78,255,215,0.4)'}},axisLabel: {color: 'rgba(255,255,255,0.5)'}}],series: [{name: '磷酸铁锰',type: 'bar',stack: '总量',barWidth: '30px',data: params.lstm},{name: '三元',type: 'bar',stack: '总量',data: params.sy},{name: '锰酸锂',type: 'bar',stack: '总量',data: params.msl},{name: '镍氢电池',type: 'bar',stack: '总量',data: params.nqdc},{name: '其他',type: 'bar',stack: '总量',data: params.other}]};return option;}
