Echarts可视化工具很方便的解决了统计图表的问题,但是微信小程序是不支持 DOM 操作,后来在Echarts官网找到了微信小程序的版本。
开始上代码了,首先要在index.wxml中定义,我要在一个页面中使用两个图表
<!--index.wxml-->
<
view
class=
"containerForm">
<
ec-canvas
id=
"mychart-dom-multi-bar"
canvas-id=
"mychart-multi-bar"
ec=
"{{ ecBar }}"></
ec-canvas
>
<
ec-canvas
id=
"mychart-dom-multi-scatter"
canvas-id=
"mychart-multi-scatter"
ec=
"{{ ecPie }}"></
ec-canvas
>
</
view
>
index.js中
import *
as echarts
from
'../../../ec-canvas/echarts';
1:引入插件,插件可以在官网定制http://echarts.baidu.com/builder.html
2:为了方便赋值,这里建立两个全局变量变量是根据业务情景,关于猪的
var barGraph =
null;
var pieChart =
null;
3:在page模块种的data里加入
data: {
ecBar: {
onInit:
function (canvas, width, height) {
barGraph = echarts.init(canvas,
null, {
width: width,
height: height
});
canvas.setChart(barGraph);
return barGraph;
}
},
ecPie: {
onInit:
function (canvas, width, height) {
pieChart = echarts.init(canvas,
null, {
width: width,
height: height
});
canvas.setChart(pieChart);
return pieChart;
}
}
},
4:onLoad中加载请求数据
onLoad:
function () {
//加载过快导致echarts未创建完成出现空值错误
setTimeout(
this.getData,
500);
},
5:getData方法里发送ajax
getData() {
wx.showLoading({
title:
'加载中...',
});
let that =
this;
util.request(发送ajax请求).then(
function (res) {
if (res.errno ===
0) {
//第一个
barGraph.setOption({
color: [
'#37a2da',
'#32c5e9',
'#67e0e3'],
tooltip: {
trigger:
'axis',
axisPointer: {
type:
'shadow'
}
},
grid: {
left:
20,
right:
20,
bottom:
15,
top:
40,
containLabel:
true
},
xAxis: [
{
type:
'value',
axisLine: {
lineStyle: {
color:
'#999'
}
},
axisLabel: {
color:
'#666'
}
}
],
yAxis: [
{
type:
'category',
axisTick: { show:
false },
data: [
'纵坐标数据
',...],
axisLine: {
lineStyle: {
color:
'#999'
}
},
axisLabel: {
color:
'#666'
}
}
],
series: [
{
name:
'肉猪',
type:
'bar',
stack:
'总量',
label: {
normal: {
show:
true
}
},
data: [res.data.value,...],//后台数据
itemStyle: {
}
}
]
});
//第二个
pieChart.setOption({
backgroundColor:
"#ffffff",
color: [
"#37A2DA",
"#32C5E9",
"#67E0E3",
"#91F2DE",
"#007500"],
series: [{
label: {
normal: {
fontSize:
14
}
},
type:
'pie',
center: [
'50%',
'50%'],
radius: [
0,
'40%'],
data: [{
value: res.data.sowCount,//数据
name:
'饼图模块名称'
},{...}
],
itemStyle: {
emphasis: {
shadowBlur:
10,
shadowOffsetX:
0,
shadowColor:
'rgba(0, 2, 2, 0.3)'
}
}
}]
});
}
wx.hideLoading();
});
}
这样就可以了,其中注意...的省略