使用微信小程序开发可视化效果 使用echarts和ec-canvas标签实现,数据的结构为 // 定义数据结构 let data = { '地区': { '广东': { '未上过学': { '合计': 100, '男': 50, '女': 50 }, '小学': { '合计': 400, '男': 200, '女': 200 }, // ...其他受教育程度 }, '广西': { '未上过学': { '合计': 50, '男': 25, '女': 25 }, '小学': { '合计': 500, '男': 250, '女': 250 }, // ... } } }; 实现一个柱状图当中的多Y轴堆叠柱折柱混合,y轴为人数,x轴为受教育程度,柱状图根据性别和地区两个指标分不同颜色,比如广东男为颜色1,广东女为颜色2,广西男为颜色3,广西女为颜色4,柱子为同一个地区(男和女)堆叠在同一个柱子,不同地区的则多一个Y轴,比如广东男和广东女在同一个柱子,折线的不同地区有多个折线用不同颜色区分,比如广西一个折线,广东一个折线,每一个点为(这个地区的这个学历)男女人数的合计数,请写出示例代码
时间: 2023-08-16 16:06:00 浏览: 62
以下是示例代码:
wxml文件:
```
<view class="container">
<ec-canvas id="mychart-dom-multi-axis-column-line" canvas-id="mychart-multi-axis-column-line" ec="{{ ec }}"></ec-canvas>
</view>
```
js文件:
```
import * as echarts from '../../ec-canvas/echarts';
Page({
data: {
ec: {
lazyLoad: true // 延迟加载
},
data: {
'地区': {
'广东': {
'未上过学': { '合计': 100, '男': 50, '女': 50 },
'小学': { '合计': 400, '男': 200, '女': 200 }
},
'广西': {
'未上过学': { '合计': 50, '男': 25, '女': 25 },
'小学': { '合计': 500, '男': 250, '女': 250 }
}
}
}
},
onLoad: function () {
this.initChart();
},
initChart: function () {
const data = this.data.data;
const chartData = {
legend: {
data: []
},
grid: {
top: '20%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
xAxis: [
{
type: 'category',
axisTick: { show: false },
data: Object.keys(data['地区']['广东']),
}
],
yAxis: [],
series: []
};
let colorList = ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'];
let seriesIndex = 0;
for (let region in data['地区']) {
let regionData = data['地区'][region];
let yAxisIndex = chartData.yAxis.length;
chartData.yAxis.push({
type: 'value',
name: region,
position: yAxisIndex === 0 ? 'left' : 'right',
axisLine: {
lineStyle: {
color: colorList[seriesIndex % colorList.length]
}
},
axisLabel: {
formatter: '{value}'
}
});
for (let gender of ['男', '女']) {
let seriesData = [];
let seriesName = region + gender;
chartData.legend.data.push(seriesName);
for (let education in regionData) {
let educationData = regionData[education];
seriesData.push(educationData[gender]);
}
chartData.series.push({
name: seriesName,
type: 'bar',
stack: gender,
yAxisIndex,
data: seriesData,
itemStyle: {
color: colorList[seriesIndex % colorList.length]
}
});
seriesIndex++;
}
}
let chart = echarts.init(this.selectComponent('#mychart-dom-multi-axis-column-line').canvas);
chart.setOption(chartData);
}
})
```
阅读全文