ECharts 常用统计图

ECharts 常用统计图

一、地图

1、代码实现

//地图调用
getDetailsMap("echartsMap", map_qu_name, map_qu_num, "人数", sName);

//地图JS
function getDetailsMap(v_id, map_name, map_num, dw, v_name, ratio) {
    var myChart = echarts.init(document.getElementById(v_id));
    myChart.clear();

    var mapName = [];  //地区名字
    for (var i = 0; i < map_name.length; i++) {
        mapName.push({
            name: map_name[i],
            value: map_num[i],
            label: {
                normal: {
                    show: true,
                    formatter: function (params) {
                        return ratio ? params.name+"\n"+ params.value + "%" : params.name+"\n"+ params.value; //地图上展示文字 + 数值
                    },
                }
            },
            itemStyle: {
                normal: {
                    areaColor: {
                        x: 0,
                        y: 0,
                        x2: 0,
                        y2: 1,
                        colorStops: [{
                            offset: 0,
                            color: '#073684' // 0% 处的颜色
                        }, {
                            offset: 1,
                            color: '#061E3D' // 100% 处的颜色
                        }],
                    },
                    borderColor: '#4ce2ff',
                    borderWidth: 1,
                },
                emphasis: {
                    areaColor: {
                        x: 0,
                        y: 0,
                        x2: 0,
                        y2: 1,
                        colorStops: [{
                            offset: 0,
                            color: '#073684' // 0% 处的颜色
                        }, {
                            offset: 1,
                            color: '#061E3D' // 100% 处的颜色
                        }],
                    },
                }
            }
        })
    }

    //若涉及市州下区县展示,需下载相应JSON文件
    var url;
    if(v_name == '吉林省'){
        url = '../../workspace/jy/leaderviewjl/json/jilinnew.json';
    } else if (v_name == '2201') {
        url = '../../workspace/jy/leaderviewjl/json/changchun.json';
    } else if (v_name == '2202') {
        url = '../../workspace/jy/leaderviewjl/json/jilinshi.json';
    } else if (v_name == '2203') {
        url = '../../workspace/jy/leaderviewjl/json/siping.json';
    } else if (v_name == '2204') {
        url = '../../workspace/jy/leaderviewjl/json/liaoyuan.json';
    } else if (v_name == '2205') {
        url = '../../workspace/jy/leaderviewjl/json/tonghua.json';
    } else if (v_name == '2206') {
        url = '../../workspace/jy/leaderviewjl/json/baishan.json';
    } else if (v_name == '2207') {
        url = '../../workspace/jy/leaderviewjl/json/songyuan.json';
    } else if (v_name == '2208') {
        url = '../../workspace/jy/leaderviewjl/json/baicheng.json';
    } else if (v_name == '2224') {
        url = '../../workspace/jy/leaderviewjl/json/yanbian.json';
    }

    $.get(url, function (geoJson) {
        // myChart.hideLoading();
        echarts.registerMap('jilin', geoJson);

        myChart.setOption(option = {
            tooltip: {
                trigger: 'item',
                formatter: ratio ? '{b}<br/>' + dw + ':{c}%' : '{b}<br/>' + dw + ':{c}人'
            },
            geo: {
                map: 'jilin',
                zoom: 1.1,
                roam: false,
                itemStyle: {
                    normal: {
                        areaColor: '#013C62',
                        shadowColor: '#182f68',
                        shadowOffsetX: 0,
                        shadowOffsetY: 25
                    },
                    emphasis: {
                        areaColor: '#2AB8FF',
                        borderWidth: 0,
                        color: 'green',
                        label: {
                            show: false
                        }
                    }
                }
            },
            series: [
                {
                    type: 'map',
                    roam: false,
                    mapType: 'jilin',
                    geoIndex: 1,
                    aspectScale: 0.75, //长宽比
                    zoom: 1.1,
                    showLegendSymbol: false, // 存在legend时显示
                    label: {
                        normal: {
                            show: true,
                            textStyle: {
                                fontSize: 16,
                                color: '#fff',
                                fontFamily: 'cursive'
                            }
                        },
                        emphasis: {//对应的鼠标悬浮效果
                            show: true,
                            textStyle: {
                                fontSize: 22,
                                color: "#fff",
                                fontFamily: 'cursive'
                            }
                        }
                    },
                    itemStyle: {
                        normal: {
                            borderColor: '#2ab8ff',
                            borderWidth: 1,
                            areaColor: '#12235c'
                        },
                        emphasis: {
                            areaColor: '#2AB8FF',
                            borderWidth: 2,
                            color: 'green'
                        }
                    },
                    data: mapName
                }
            ]
        });
    });

    //地图点击事件
    myChart.on('click', function (param) {
        var selected = param.name;
        if (selected) {
            switch (selected) {
                case '长春市':
                    break;
                case '吉林市':
                    break;
                case '四平市':
                    break;
                case '辽源市':
                    break;
                case '通化市':
                    break;
                case '白山市':
                    break;
                case '松原市':
                    break;
                case '白城市':
                    break;
                case '延边朝鲜族自治州':
                    break;
                case selected:
                    break;
            }
        }
    });
}

 

2、地图效果图

  

 

二、折线图(也可当柱状图-单条)

1、代码实现

//折线图调用
getBarY("chartsLine", "", line_name, line_num, 'line', '8%', '2.5%', '4%', '20%', colorList, false);

//柱状图-单条调用
getBarY("chartsBar", "", line_name, line_num, 'bar', '8%', '2.5%', '4%', '20%', colorList, false);
//折线图JS
function getBarY(v_id, v_title, v_data_name, v_data_cnt, v_type, v_x, v_x2, v_y, v_y2, colorList, isShowZoom) {
    var myChart = echarts.init(document.getElementById(v_id));
    myChart.clear();

    option = {
        title: {
            text: '',
            subtext: ''
        },
        tooltip: {
            trigger: 'axis',
            axisPointer: {
                type: 'shadow'
            }
        },
        color: colorList,
        legend: {
            data: []
        },
        grid: {
            top: v_x,
            left: v_x2,
            right: v_y,
            bottom: v_y2,
            containLabel: true
        },
        xAxis: {
            type: 'category',
            data: v_data_name,
            splitLine : {
                show : false
            },
            axisLabel : {
                textStyle : {
                    color : '#3678ff'
                },
                interval: 0,
                rotate: 25 //文字倾斜度
            },
            axisTick : {
                show : false
            },
            axisLine : {
                lineStyle : {
                    color : '#234DB4',
                    width : 2
                }
            }
        },
        yAxis: {
            type: 'value',
            nameTextStyle : {
                color : '#3678ff'
            },
            splitLine : {
                show : false
            },
            axisLabel : {
                textStyle : {
                    color : '#3678ff'
                }
            },
            axisTick : {
                show : false
            },
            axisLine : {
                lineStyle : {
                    color : '#234DB4',
                    width : 2
                }
            }
        },
        series: [{
            name: [],
            type: v_type,
            showAllSymbol: true,
            symbol: 'circle',
            symbolSize: 15,
            barWidth: '15',
            data: v_data_cnt,
            label: {
                normal: {
                    show: true,
                    position: 'top',
                    textStyle: {
                        color: '#fff'
                    }
                }
            },
            itemStyle: {
                normal: {
                    color: function(params) {
                                var color_list = colorList;
                                return color_list[params.dataIndex]
                            },
                    borderColor: "#fff",
                    borderWidth: 2,
                    shadowColor: 'rgba(0, 0, 0, .3)',
                    shadowBlur: 0,
                    shadowOffsetY: 2,
                    shadowOffsetX: 2
                }
            },
            areaStyle: {
                normal: {
                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1,
                        [{
                            offset: 0,
                            color: 'rgba(108,80,243,0.5)'
                        },
                        {
                            offset: 1,
                            color: 'rgba(108,80,243,0.1)'
                        }],
                        false
                    )
                }
            }
        }],
        dataZoom: [{
            start: 0,        // 滚动条开始范围
            end: v_data_name.length > 25 ? 40 : 100,   // 滚动条结束范围
            show: isShowZoom ? true : false,  // 是否显示滚动条
            xAxisIndex: [0],
            textStyle: {
                color: '#b1d4ff'    // 显示字的颜色
            },
            bottom: 20,
            backgroundColor: 'rgba(53,142,255,0.1)',  // 背景颜色
            height: 20,           // 滚动条高度
            handleSize: 20,                          // 手柄高度
            showDataShadow: true, // 显示数据阴影
            // 数据走势部分的颜色
            dataBackground: {
                areaStyle: {
                    opacity: 0.5, // 走势区域的透明度
                    color: '#7662ee' // 走势区域的颜色
                },
                lineStyle: {
                    opacity: 1,   // 走势线条的透明度
                    color: '#7662ee' // 走势区域的颜色
                }
            },
            handleStyle: {
                color: '#b1d4ff', // 手柄颜色
                shadowBlur: 8,    // 阴影长度
                shadowColor: 'rgba(0, 0, 0, 0)',// 阴影颜色
                shadowOffsetX: 2, // 手柄本身的阴影 X 偏移。
                shadowOffsetY: 2  // 手柄本身的阴影 Y 偏移。
            }},
            {
                type: 'inside'// 鼠标滚动效果
            }]
    };
    myChart.setOption(option);
}

 

注:shadowColor、shadowBlur这俩属性IE加上会报错(IE11、10、9、8都试过)

areaStyle: {
    normal: {
        color: new echarts.graphic.LinearGradient(0, 0, 0, 1,
            [{
                offset: 0,
                color: 'rgba(108,80,243,0.3)'
            },
            {
                offset: 1,
                color: 'rgba(108,80,243,0)'
            }],
            false
        ),
        shadowColor: 'rgba(108,80,243, 0.9)',  //IE加上这个属性就会报错
        shadowBlur: 20  //IE加上这个属性就会报错
    }
}

 

2、折线图效果

 

3、柱状图效果-单条

 

三、柱状图-多条

1、代码实现

//柱状图-多条调用
getDoubleBarY('bar_echarts', bar_name, [bar_jhNum, bar_sjNum], ['计划完成:' + jhwc_count, '实际完成:' + zxjy_count], '地区', '人数(人)', '2%', '8%', '20%', '13%');
                
//柱状图多条JS
function getDoubleBarY(b_id, data_name, data_num, legend_name, x_util, y_util, v_x, v_x1, v_y, v_y1) {
    var myChart = echarts.init(document.getElementById(b_id));
    myChart.clear();

    var data = [];
    var dataList;
    var series = [];
    var seriesList;
    var color = ["#02c3f1", "#53e568", "#a154e9"];
    for(var i = 0; i < legend_name.length; i++){
        dataList = {
            name: legend_name[i],
            textStyle: {
                color: color[i]
            }
        };
        data.push(dataList);

        seriesList = {
            name: legend_name[i],
            type: 'bar',
            data: data_num[i],
            barWidth: '10',
            label: {
                show: true,
                formatter: "{a|}",
                color: "#fff",
                position: "top",
                distance: -10,
                backgroundColor: color[i],
                padding: 4,
                borderRadius: 15,
                rich: {
                    a: {
                        width: 6,
                        height: 6,
                        borderRadius: 6,
                        lineHeight: 6,
                        backgroundColor: "#fff"
                    }
                }
            },
            itemStyle: {
                normal: {
                    color: {
                        type: "linear",
                        x: 0,
                        y: 0,
                        x2: 1,
                        y2: 1,
                        colorStops: [{
                            offset: 0,
                            color: color[i] // 0% 处的颜色
                        },
                            {
                                offset: 1,
                                color: "#1F4869" // 100% 处的颜色
                            }
                        ]
                    }
                }
            }
        };
        series.push(seriesList);
    }

    option = {
        color: ['#3678ff'],
        tooltip: {
            trigger: 'axis',
            axisPointer: { // 坐标轴指示器,坐标轴触发有效
                type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
            }
        },
        legend: {
            itemWidth: 0,
            data: data,
            formatter: function (name) {
                return "█ " + name;
            }
        },
        grid: {
            left: v_x,
            right: v_x1,
            top: v_y,
            bottom: v_y1,
            containLabel: true
        },
        xAxis: [{
            name: x_util,
            nameTextStyle: {
                color: '#3678ff'
            },
            type: 'category',
            data: data_name,
            splitLine: {
                show: false
            },
            axisLabel: {
                textStyle : {
                    color : '#3678ff'
                },
                interval: 0,
                rotate: 45 //文字倾斜度

            },
            axisTick: {
                show: false
            },
            axisLine: {
                lineStyle: {
                    color: '#234DB4',
                    width: 2
                }
            }
        }],
        yAxis: [{
            name: y_util,
            nameTextStyle: {
                color: '#3678ff'
            },
            type: 'value',
            splitLine: {
                show: false
            },
            axisLabel: {
                textStyle: {
                    color: '#3678ff'
                }
            },
            axisTick: {
                show: false
            },
            axisLine: {
                lineStyle: {
                    color: '#234DB4',
                    width: 2
                }
            },
        }],
        series: series
    };
    myChart.setOption(option);
}

 

2、柱状图效果-多条

 

四、迁徙地图

1、代码实现

//迁徙地图调
var qyData  = [];
qyData.push([{name: '吉林'}, {name: area_name[i], value: area_num[i] / 1000}]);
getZGMap("echartsQXMap", qyData);
//迁徙地图JS
function getZGMap(p_id, qyData) {
    var myChart = echarts.init(document.getElementById(p_id));
    myChart.clear();

    var geoCoordMap = {
        '吉林': [125.8154, 44.2584],
        '黑龙江省': [127.9688, 45.368],
        '辽宁省': [123.1238, 42.1216],
        '山东省': [117.1582, 36.8701],
        '河北省': [114.4995, 38.1006],
        '北京市': [116.23, 39.54],
        '天津市': [117.2, 39.12],
        '江苏省': [118.7846, 32.08513],
        '广东省': [113.15, 23.08],
        '内蒙古自治区': [111.73, 40.83],
        '浙江省': [120.15, 30.28]
    };

    var planePath = 'path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z';

    var convertData = function (data) {
        var res = [];
        for (var i = 0; i < data.length; i++) {
            var dataItem = data[i];
            var fromCoord = geoCoordMap[dataItem[0].name];
            var toCoord = geoCoordMap[dataItem[1].name];
            if (fromCoord && toCoord) {
                res.push([{
                    coord: fromCoord
                }, {
                    coord: toCoord
                }]);
            }
        }
        return res;
    };

    var color = ['#a6c84c', '#ffa022', '#46bee9'];
    var series = [];
    [['吉林', qyData]].forEach(function (item, i) {
        series.push({
                name: item[0],
                type: 'lines',
                zlevel: 1,
                effect: {
                    show: true,
                    period: 6,
                    trailLength: 0.7,
                    color: '#fff',
                    symbolSize: 3
                },
                lineStyle: {
                    normal: {
                        color: color[i],
                        // color: function (value) { //随机颜色
                        //     return "#" + ("00000" + ((Math.random() * 16777215 + 0.5) >> 0).toString(16)).slice(-6);
                        // },
                        width: 0,
                        curveness: 0.2
                    }
                },
                data: convertData(item[1])
            },
            {
                name: item[0],
                type: 'lines',
                zlevel: 2,
                effect: {
                    show: true,
                    period: 6,
                    trailLength: 0,
                    symbol: planePath, //飞机图标
                    symbolSize: 10 //飞机大小
                },
                lineStyle: {
                    normal: {
                        color: color[i],
                        width: 1,
                        opacity: 0.4,
                        curveness: 0.2
                    }
                },
                data: convertData(item[1])
            },
            {
                name: item[0],
                type: 'effectScatter',
                coordinateSystem: 'geo',
                zlevel: 2,
                rippleEffect: {
                    brushType: 'stroke'
                },
                label: {
                    normal: {
                        show: true,
                        position: 'right',
                        formatter: '{b}'
                    }
                },
                symbolSize: function (val) {
                    return val[2] / 8;
                },
                itemStyle: {
                    normal: {
                        color: color[i]
                    }
                },
                data: item[1].map(function (dataItem) {
                    return {
                        name: dataItem[1].name,
                        value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
                    };
                })
            });
    });

    option = {
        title : {
        },
        tooltip : {
            trigger: 'item'
        },
        geo: {
            map: 'china',
            label: {
                normal:{
                    show: false,
                },
                emphasis: {
                    show: false,
                }
            },
            roam: false,
            itemStyle: {
                normal: {
                    areaColor: '#004981',
                    borderColor: '#46d9ff'
                },
                emphasis: {
                    areaColor: '#004999'
                }
            }
        },
        series: series
    };

    var url = '../../workspace/jy/leaderviewjl/json/china.json';
    $.get(url, function (geoJson) {
        myChart.hideLoading();
        echarts.registerMap('china', geoJson);
        myChart.setOption(option);
    })
}

 

2、迁徙效果图

 

posted @ 2020-03-21 16:15  慕容冰菡  阅读(917)  评论(0编辑  收藏  举报