Michelle20180227

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、迁徙效果图

 

分类:

技术点:

相关文章: