赞
踩
首先在wxml给出一个canvas
<canvas canvas-id="lineCanvas" disable-scroll="true" class="canvas" bindtouchstart="touchcanvas"></canvas>
wxss描述样式
.canvas {
position: absolute;
width: 100%;
height: 100%;
top: 10%;
}
在js文件中引入文件,并且定义canvas-id,在data中定义color:
var wxCharts = require('../../utils/wxcharts.js');
const app = getApp()
var lineChart = null;
data: {
textcolor: '#014f8e',
//从缓存中取数据时,现在data中定义
name:'',
//折线图所展示的数值
min:'',
},
在onShow中加载:
onShow: function () {
this.canvas1_click()
},
canvas1_click: function () { var that = this this.setData({ textcolor: '#014f8e', }) var oppenid = wx.getStorageSync('name');//此处为取出在缓存中的数值 var xArr = ["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", "27-28", "29-30"] var yArr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] wx.request({ url: '',//此处为后台接口 method: 'POST', header: { 'content-type': 'application/x-www-form-urlencoded', }, data: { //由于后台查询数据时需要前端传数据,放在data中 //这里的name是从缓存中取出来的 name: name }, success: function (res) { //接口中的数组表现为data{sps{heightArray[1,2,3,4,5,6]}} //拆分的时候用split(',') let tempArr = res.data.sps['heightArray'].split(',') for (var i = 0; i < tempArr.length; i++) { yArr[i] = tempArr[i] } that.setData({ //折线图所展示的数据 min: tempArr.sort()[0], }) }, fail: function (res) { wx.hideLoading() wx.showToast({ title: '请稍后重试', icon: 'none', duration: 1500 }) } }) this.canvasChart(xArr, yArr, '高度') },
图表点击事件:
touchcanvas: function (e) {
lineChart.showToolTip(e, {
format: function (item) {
return item.name + ':' + item.data
}
});
},
绘制图表:
canvasChart: function (x_data, y_data, name) { console.log(y_data) var windowWidth = '', windowHeight = ''; //定义宽高 try { var res = wx.getSystemInfoSync(); //试图获取屏幕宽高数据 windowWidth = res.windowWidth / 750 * 690; //以设计图750为主进行比例算换 windowHeight = res.windowWidth / 750 * 550; //以设计图750为主进行比例算换 } catch (e) { console.error('getSystemInfoSync failed!'); //如果获取失败 } lineChart = new wxCharts({ canvasId: 'lineCanvas', type: 'line', categories: x_data, animation: true, series: [{ name: name, data: y_data, format: function (val, name) { return val + 'cm'; } }, ], xAxis: { disableGrid: true }, yAxis: { title: '高度', format: function (val) { //返回数值 return val + 'cm'; }, max: 20, min: 0 }, width: windowWidth, height: windowHeight, dataLabel: false, dataPointShape: true, extra: { lineStyle: 'curve' } }); },
借鉴:http://t.csdn.cn/03Dwv
var wxCharts = require('../../utils/wxcharts.js'); var lineChart = null; Page({ data:{ textcolor1:'#014f8e', textcolor2:'#bfbfbf', }, onLoad:function(){ //下面是图表一显示的数据,只需替换掉数据折现就会发生变化实现动态生成 var x_data=["12-05", "12-06", "12-07", "12-08", "12-09", "12-10", "12-11", "12-12", "12-13", "12-14", "12-15", "12-16", "12-17", "12-18", "12-19"] var y_data= ["2710778.83", "3701004.17", "1959107.37", "1875401.10", "1844007.76", "1927753.07", "2214439.68", "2501855.64", "2348521.30", "1815527.72", "1938038.04", "1911152.88", "2062097.59", "2397674.45", "2796167.86"] //绘制折线图 this.OnWxChart(x_data,y_data,'图表一') }, //更换折线图数据为图表一数据 canvas1_click:function(){ this.setData({ textcolor1:'#014f8e', textcolor2:'#bfbfbf', }) var x_data=["12-05", "12-06", "12-07", "12-08", "12-09", "12-10", "12-11", "12-12", "12-13", "12-14", "12-15", "12-16", "12-17", "12-18", "12-19"] var y_data= ["2710778.83", "3701004.17", "1959107.37", "1875401.10", "1844007.76", "1927753.07", "2214439.68", "2501855.64", "2348521.30", "1815527.72", "1938038.04", "1911152.88", "2062097.59", "2397674.45", "2796167.86"] //绘制折线图 this.OnWxChart(x_data,y_data,'图表一') }, //更换折线图数据为图表二数据 canvas2_click:function(){ this.setData({ textcolor1:'#bfbfbf', textcolor2:'#014f8e', }) var x_data=["1", "2", "3", "4", "5", "6", "7", "8", "9"] var y_data= ["113", "620", "332", "540", "580", "580", "603", "100", "605"] //绘制折线图 this.OnWxChart(x_data,y_data,'图表二') }, //图表点击事件 touchcanvas:function(e){ lineChart.showToolTip(e, { format: function (item, category) { return category + ' ' + item.name + ':' + item.data } }); }, //折线图绘制方法 OnWxChart:function(x_data,y_data,name){ var windowWidth = '', windowHeight=''; //定义宽高 try { var res = wx.getSystemInfoSync(); //试图获取屏幕宽高数据 windowWidth = res.windowWidth / 750 * 690; //以设计图750为主进行比例算换 windowHeight = res.windowWidth / 750 * 550 //以设计图750为主进行比例算换 } catch (e) { console.error('getSystemInfoSync failed!'); //如果获取失败 } lineChart = new wxCharts({ canvasId: 'lineCanvas', //输入wxml中canvas的id type: 'line', categories:x_data, //模拟的x轴横坐标参数 animation: true, //是否开启动画 series: [{ name: name, data: y_data, format: function (val, name) { return val + '元'; } } ], xAxis: { //是否隐藏x轴分割线 disableGrid: true, }, yAxis: { //y轴数据 title: '', //标题 format: function (val) { //返回数值 return val.toFixed(2); }, min: 400000.00, //最小值 gridColor: '#D8D8D8', }, width: windowWidth*1.1, //图表展示内容宽度 height: windowHeight, //图表展示内容高度 dataLabel: false, //是否在图表上直接显示数据 dataPointShape: true, //是否在图标上显示数据点标志 extra: { lineStyle: 'Broken' //曲线 }, }); } })
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。