Advertisement

canvas画条形图 微信小程序_微信小程序canvas绘制坐标图

阅读量:

functiondraw(data, ctx) {var width, height = 300, ratioX, ratioY, maxY, stepY;var newArr = newArray();//-------- 数据处理 -----------

if (data.time == null) {return;

}if (data.type == 'day' || data.type == 'month') {var timeList = newArray();for (var i = 0; i < data.time.length; i++) {if ((i % 4 == 0 && data.type == 'day') || (i % 5 == 0 && data.type == 'month')) {

timeList.push(data.time[i].substr(data.time[i].length- 5, 5));

}

}

data.time=timeList;

}else{for (var i = 0; i < data.time.length; i++) {

data.time[i]= data.time[i].substr(data.time[i].length - 5, 5);

}

}//这里是后台返回的数据,处理后展示在页面//---------- 获取屏宽 ---------------

wx.getSystemInfo({

success:function(res) {

width=res.windowWidth;

}

})

ratioX= parseInt((width - 60) / (data.time.length - 1));

ratioY= parseInt((height - 45) / 6);//求value的最大值

for (var i = 0; i < data.list.length; i++) {

newArr.push(Math.max.apply(Math, data.list[i].value));

}

maxY=Math.max.apply(Math, newArr);

stepY= Math.ceil(maxY / 4);//------- 绘制坐标线 ------

ctx.beginPath();for (var i = 0; i < 5; i++) {

ctx.save();

ctx.setStrokeStyle("#dde2e3");

ctx.setFillStyle("#848198");

ctx.setFontSize('8');

ctx.fillText(i* stepY, 0, 220 - i *ratioY);

ctx.moveTo(22, 215 - i *ratioY);

ctx.lineTo((width- 30), 215 - i *ratioY);

ctx.stroke();

ctx.restore();

}//--------- 绘制图例 ------------

for (var i = 0; i < data.list.length; i++) {

ctx.save();

ctx.translate(15, 215);

ctx.beginPath();

ctx.setStrokeStyle(color[i]);

ctx.setLineCap("round");

ctx.setLineWidth(10);

ctx.moveTo(22 + i * 38, 46);

ctx.lineTo(38 + i * 38, 46);

ctx.stroke();

ctx.setFontSize('8');

ctx.setFillStyle("#000000");

ctx.fillText(data.list[i].title,21 + i * 38, 66);

ctx.restore();

}//------ 绘制横坐标 ------

for (var i = 0; i < data.time.length; i++) {

ctx.save();

ctx.translate(15, 215);

ctx.setFontSize('8');

ctx.setFillStyle('#848198');

ctx.fillText(data.time[i], i* (ratioX), 20);

ctx.restore();

}//------ 绘制折线 ---------

for (var i = 0; i < data.list.length; i++) {

ctx.beginPath();

ctx.save();

ctx.translate(22, 215);

ctx.setStrokeStyle(color[i]);

ctx.moveTo(0, -data.list[i].value[0] / (stepY /ratioY));//console.log(data.list[i].value);

for (var j = 0; j < data.list[i].value.length; j++) {

ctx.lineTo(j* (parseFloat((width - 53) / (data.list[i].value.length - 1))), -(data.list[i].value[j] / (stepY /ratioY)));

ctx.stroke();

}

ctx.restore();

}

ctx.draw();

}

全部评论 (0)

还没有任何评论哟~