赞
踩
import * as echarts from '../../../echarts/ec-canvas/echarts';
,json文件也要引入;let dataListA=[]
也可以在page data里面定义dataListA:[]
。(使用第一个方法定义需要在onshow里面初始化Chart:Chart = null
,第二种不用)let Chart = null;
dataDay: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '2', '28', '29', '30', '31'],
dataWeak: ['周一', '周二', '周三', '周四', '周五', '周六', '周末'],
dataYear: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '腊月'],
ec: {
// onInit: initChart,
// 将 lazyLoad 设为 true 后,需要手动初始化图表
lazyLoad: true
},
<view class="container" >
<ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar2" ec="{{ec}}" force-use-old-canvas="true"></ec-canvas>
</view>
``
8. 绘画图标的js代码如下
getData: function () { /** * 此处的操作: * 获取数据json */ // dataListA = [18, 36, 65, 30, 78, 40, 33]; //如果是第一次绘制 if (!Chart) { this.init_echarts(); //初始化图表 } else { this.setOption(Chart); //更新数据 } }, //初始化图表 init_echarts: function () { this.ecComponent.init((canvas, width, height) => { // 初始化图表 Chart = echarts.init(canvas, null, { width: 370, height: 260 }); // Chart.setOption(this.getOption()); this.setOption(Chart); // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return Chart; }); }, setOption: function (Chart) { Chart.clear(); // 清除 Chart.setOption(this.getOption(), true); //获取新数据 }, getOption: function () { // 指定图表的配置项和数据 console.log(Chart) var option = { color: ["#37A2DA", "#67E0E3", "#9FE6B8"], legend: { data: ['支付宝', '微信', '银行卡'], top: 10, left: 'center', backgroundColor: 'none', z: 100, type: 'scroll' }, grid: { containLabel: true, bottom:10, }, tooltip: { show: true, trigger: 'axis' }, xAxis: { type: 'category', data: xData, boundaryGap: false, axisLabel: { // interval:0,//代表显示所有x轴标签显示 }, axisLine: { onZero: true } }, yAxis: { type: 'value' }, series: [{ name: '支付宝', smooth: true, data: dataListA, type: 'line', symbol: "none", areaStyle: { normal: { // color: '#FF9307' //改变区域颜色 } }, lineStyle: { // color:'#FF9307' //改变折线颜色 } }, { name: '微信', smooth: true, data: dataListB, type: 'line', symbol: "none", areaStyle: { normal: { // color: '#FF9307' //改变区域颜色 } }, lineStyle: { // color:'#FF9307' //改变折线颜色 } }, { name: '银行卡', smooth: true, data: dataListC, type: 'line', symbol: "none", areaStyle: { normal: { // color: '#FF9307' //改变区域颜色 } }, lineStyle: { // color:'#FF9307' //改变折线颜色 } } ] } return option; },
this.getData();
switchNav(e) { switch (e.currentTarget.dataset.index) { case '1': //周 dataListA = 请求到的数据的第一条线需要的数据整理出来; dataListB = 请求到的数据的第二条线需要的数据整理出来; dataListC = 请求到的数据的第三条线需要的数据整理出来; xData = this.data.dataWeak;//修改x轴的数据 this.getData(); break; case '2': //天 dataListA = 请求到的数据的第一条线需要的数据整理出来; dataListB = 请求到的数据的第二条线需要的数据整理出来; dataListC = 请求到的数据的第三条线需要的数据整理出来; xData = this.data.dataDay; this.getData(); break; case '3': //月 一年的 dataListA = 请求到的数据的第一条线需要的数据整理出来; dataListB = 请求到的数据的第二条线需要的数据整理出来; dataListC = 请求到的数据的第三条线需要的数据整理出来; xData = this.data.dataYear; this.getData(); break; } },
1、图标模糊可以调整图表大小,我是直接在init_echarts方法里把宽高写死了,
2、第二次进入没有渲染一片空白的问题,解决办法是每次进入页面初始化Chart ,见第四条
3、 第二次进入,数据混乱的问题,我还没有遇到过,网上搜的办法是setOption: function (Chart) { Chart.clear(); // 清除 Chart.setOption(this.getOption(), true); //获取新数据 },
setOption方法加了一一个true属性。原因如下
原因:chart.setOption(option,notMerge,lazyUpdate);
option:图表的配置项和数据
notMerge:可选,是否不跟之前设置的option进行合并,默认为false,即合并。(这里是导致二次渲染不成功的根本)
lazyUpdate:可选,在设置完option后是否不立即更新图表,默认为false,即立即更新。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。