使用微信小程序开发可视化效果 使用echarts和ec-canvas标签实现,数据的结构为{地区{广东,广西},受教育程度{未上过学,小学,初中,高中,大学专科,大学本科,研究生},人数{合计,男,女}},分别为两个地区实现饼图,根据受教育成都显示不同的颜色,以及实现一个柱状图当中的折柱混合,根据性别和地区份不同颜色,其中同一个地区同一个学历的男女为同一个柱子,请写出示例代码。
时间: 2023-10-15 19:02:05 浏览: 177
微信小程序ec-canvas
好的,以下是示例代码:
```
// 在wxml中引入ec-canvas组件
<ec-canvas id="pieChart1" canvas-id="pieCanvas1" ec="{{ ecPie1 }}"></ec-canvas>
<ec-canvas id="pieChart2" canvas-id="pieCanvas2" ec="{{ ecPie2 }}"></ec-canvas>
<ec-canvas id="barChart" canvas-id="barCanvas" ec="{{ ecBar }}"></ec-canvas>
// 在js中引入echarts库
import * as echarts from '../../utils/ec-canvas/echarts';
// 定义数据结构
let data = {
'地区': {
'广东': {
'未上过学': {
'合计': 100,
'男': 50,
'女': 50
},
'小学': {
'合计': 200,
'男': 100,
'女': 100
},
// ...其他受教育程度
},
'广西': {
// ...
}
}
};
// 生成饼图1
function generatePie1() {
let ecPie1 = this.selectComponent('#pieChart1').getEchartsInstance();
ecPie1.setOption({
series: [{
type: 'pie',
data: [
{value: data['地区']['广东']['未上过学']['合计'], name: '未上过学'},
{value: data['地区']['广东']['小学']['合计'], name: '小学'},
// ...其他受教育程度
],
itemStyle: {
color: function(params) {
// 根据不同受教育程度设置颜色
let colorList = ['#c23531','#2f4554','#61a0a8','#d48265','#91c7ae','#749f83','#ca8622'];
return colorList[params.dataIndex]
}
}
}]
});
}
// 生成饼图2
function generatePie2() {
let ecPie2 = this.selectComponent('#pieChart2').getEchartsInstance();
ecPie2.setOption({
series: [{
type: 'pie',
data: [
{value: data['地区']['广西']['未上过学']['合计'], name: '未上过学'},
{value: data['地区']['广西']['小学']['合计'], name: '小学'},
// ...其他受教育程度
],
itemStyle: {
color: function(params) {
// 根据不同受教育程度设置颜色
let colorList = ['#c23531','#2f4554','#61a0a8','#d48265','#91c7ae','#749f83','#ca8622'];
return colorList[params.dataIndex]
}
}
}]
});
}
// 生成柱状图
function generateBar() {
let ecBar = this.selectComponent('#barChart').getEchartsInstance();
ecBar.setOption({
legend: {
data: ['男', '女']
},
xAxis: {
data: ['广东', '广西']
},
yAxis: {},
series: [{
name: '男',
type: 'bar',
stack: '总量',
data: [
data['地区']['广东']['未上过学']['男'],
data['地区']['广西']['未上过学']['男']
],
itemStyle: {
color: '#c23531'
}
}, {
name: '女',
type: 'bar',
stack: '总量',
data: [
data['地区']['广东']['未上过学']['女'],
data['地区']['广西']['未上过学']['女']
],
itemStyle: {
color: '#2f4554'
}
}, {
name: '',
type: 'line',
stack: '总量',
data: [
data['地区']['广东']['未上过学']['合计'],
data['地区']['广西']['未上过学']['合计']
],
itemStyle: {
color: '#61a0a8'
}
}]
});
}
// 在onLoad函数中调用生成图表函数
onLoad: function() {
this.setData({
ecPie1: {
onInit: generatePie1
},
ecPie2: {
onInit: generatePie2
},
ecBar: {
onInit: generateBar
}
});
}
```
阅读全文