使用微信小程序开发可视化效果 使用echarts和ec-canvas以及canvas标签实现,数据的结构为{地区{广东,广西},受教育程度{未上过学,小学,初中,高中,大学专科,大学本科,研究生},人数{合计,男,女}},分别为两个地区实现饼图,根据受教育成都显示不同的颜色,以及实现一个柱状图当中的折柱混合,根据性别和地区份不同颜色,其中同一个地区同一个学历的男女为同一个柱子,请写出示例代码
时间: 2023-10-15 13:02:05 浏览: 172
好的,下面是一个示例代码,通过echarts和ec-canvas实现两个地区的饼图和一个柱状图:
```html
<!--index.wxml-->
<view class="container">
<view class="chart">
<ec-canvas id="chart1" canvas-id="chart1-canvas" ec="{{ec1}}"></ec-canvas>
</view>
<view class="chart">
<ec-canvas id="chart2" canvas-id="chart2-canvas" ec="{{ec2}}"></ec-canvas>
</view>
<view class="chart">
<canvas id="chart3" style="width: 100%; height: 300px;"></canvas>
</view>
</view>
```
```javascript
// index.js
import * as echarts from '../../components/ec-canvas/echarts';
Page({
data: {
ec1: {
lazyLoad: true
},
ec2: {
lazyLoad: true
}
},
onLoad: function () {
this.initChart1();
this.initChart2();
this.initChart3();
},
initChart1: function () {
var option = {
title: {
text: '广东受教育程度分布',
left: 'center'
},
series: [{
name: '受教育程度',
type: 'pie',
radius: '55%',
center: ['50%', '60%'],
data: [
{ value: 335, name: '未上过学', itemStyle: { color: '#c23531' } },
{ value: 310, name: '小学', itemStyle: { color: '#2f4554' } },
{ value: 234, name: '初中', itemStyle: { color: '#61a0a8' } },
{ value: 135, name: '高中', itemStyle: { color: '#d48265' } },
{ value: 1548, name: '大学专科', itemStyle: { color: '#91c7ae' } },
{ value: 335, name: '大学本科', itemStyle: { color: '#749f83' } },
{ value: 310, name: '研究生', itemStyle: { color: '#ca8622' } }
],
label: {
formatter: '{b}:{c}({d}%)'
},
emphasis: {
label: {
show: true,
fontSize: '18',
fontWeight: 'bold'
}
},
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}]
};
this.initChart('chart1', option);
},
initChart2: function () {
var option = {
title: {
text: '广西受教育程度分布',
left: 'center'
},
series: [{
name: '受教育程度',
type: 'pie',
radius: '55%',
center: ['50%', '60%'],
data: [
{ value: 135, name: '未上过学', itemStyle: { color: '#c23531' } },
{ value: 1548, name: '小学', itemStyle: { color: '#2f4554' } },
{ value: 335, name: '初中', itemStyle: { color: '#61a0a8' } },
{ value: 310, name: '高中', itemStyle: { color: '#d48265' } },
{ value: 234, name: '大学专科', itemStyle: { color: '#91c7ae' } },
{ value: 310, name: '大学本科', itemStyle: { color: '#749f83' } },
{ value: 335, name: '研究生', itemStyle: { color: '#ca8622' } }
],
label: {
formatter: '{b}:{c}({d}%)'
},
emphasis: {
label: {
show: true,
fontSize: '18',
fontWeight: 'bold'
}
},
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}]
};
this.initChart('chart2', option);
},
initChart3: function () {
var chart = echarts.init(this.selectComponent('#chart3').canvas, null, {
width: wx.getSystemInfoSync().windowWidth,
height: 300
});
var option = {
title: {
text: '广东和广西受教育程度分布',
left: 'center'
},
xAxis: {
type: 'category',
data: ['广东', '广西'],
axisLabel: {
interval: 0,
rotate: 30
}
},
yAxis: {
type: 'value'
},
series: [{
name: '男',
type: 'bar',
stack: '总量',
itemStyle: {
color: '#2f4554'
},
data: [320, 302]
}, {
name: '女',
type: 'bar',
stack: '总量',
itemStyle: {
color: '#c23531'
},
data: [120, 132]
}, {
name: '折线',
type: 'line',
data: [440, 434],
itemStyle: {
color: '#61a0a8'
}
}]
};
chart.setOption(option);
},
initChart: function (id, option) {
var chart = echarts.init(this.selectComponent('#' + id).canvas, null, {
width: wx.getSystemInfoSync().windowWidth,
height: 300
});
chart.setOption(option);
}
})
```
需要注意的是,此示例代码中柱状图使用的是canvas标签实现,而不是ec-canvas组件,需要手动初始化echarts对象。
阅读全文