Echarts30中利用dataset进行数据管理并封装图表生成方法

10次阅读

共计 1659 个字符,预计需要花费 5 分钟才能阅读完成。

效果图

JS

let rst = [
            {
                name: 'Matcha Latte',
                data:[{time: '2012',num: 365},
                    {time: '2013',num: 815},
                    {time: '2014',num: 665},
                    {time: '2015',num: 565},
                ]
            },{
                name: 'Milk Tea',
                data:[{time: '2012',num: 265},
                    {time: '2013',num: 615},
                    {time: '2014',num: 465},
                    {time: '2015',num: 965},
                ]
            },{
                name: 'Cheese Cocoa',
                data:[{time: '2012',num: 765},
                    {time: '2013',num: 215},
                    {time: '2014',num: 765},
                    {time: '2015',num: 165},
                ]
            }
        ];
        

        let chartOption = {
            el:'#chart',// 放置图表的元素 css 选择器
            title: '市场饮料销售情况',// 图表标题
            unit: '吨',
            dataArr: rst,
            
        }

        
        /**
         * chtOption = {
         *  el:'', // 放置图表的元素 css 选择器
            title: '', // 图表大标题
            unit: [], // 单位
         * }
         * 
         * */
        function barChart (chtOption){let myChart = echarts.init(document.querySelector('#chart'));
            let dataObj = {series: [],// 系列数据
                xData:[],// x 轴数据
                yData:[],// 类目数据
                source: [],
                chartType: [],}
            for(let i in chtOption.dataArr[0].data){dataObj.series.push(chtOption.dataArr[0].data[i].time);
            }
            for(let i in chtOption.dataArr){let perSeries = [];
                perSeries.push(chtOption.dataArr[i].name);
                for(let j in chtOption.dataArr[i].data){perSeries.push(chtOption.dataArr[i].data[j].num);
                    
                }
                dataObj.xData.push(perSeries);
                dataObj.yData.push(chtOption.dataArr[i].name);
            }
            let dataSeries =  ['name_value'];
            for(let i in dataObj.series){dataSeries.push(dataObj.series[i]);
                dataObj.chartType.push({type: 'bar'});
            }
            dataObj.source.push(dataSeries);
            for(let i in dataObj.xData){dataObj.source.push(dataObj.xData[i]);
            }
            let option = {
                title: {
                    text: chtOption.title,
                    textAlign: 'left'
                },
                tooltip: {
                    trigger: 'axis',
                    axisPointer: {type: 'shadow'}
                },
                legend: {data: chtOption.series},
                grid: {
                    left: '3%',
                    right: '12%',
                    bottom: '3%',
                    top: '10%',
                    containLabel: true
                },
                dataset: {source: dataObj.source},
                xAxis: [{ gridIndex: 0,name: '单位:' + chtOption.unit}
                ],
                yAxis: [{type: 'category',gridIndex: 0}
                ],
                series: dataObj.chartType
            };

            myChart.setOption(option);
        }
        
        barChart(chartOption);

正文完
 0