﻿var developMode = false;

if (developMode) {
    // for develop
    require.config({
    	paths : {
    		webkitDep : '../../doc/example/webkit-dep'
    	},
        packages: [
            {
                name: 'echarts',
                location: '../../src',
                main: 'echarts'
            },
            {
                name: 'zrender',
                //location: 'http://ecomfe.github.io/zrender/src',
                location: '../../../zrender/src',
                main: 'zrender'
            }
        ]
    });
}
else {
    // for echarts online home page
    var fileLocation = '../../doc/example/www/js/echarts-map';
    require.config({
        paths:{ 
            echarts: fileLocation,
            'echarts/chart/line': fileLocation,
            'echarts/chart/bar': fileLocation,
            'echarts/chart/scatter': fileLocation,
            'echarts/chart/k': fileLocation,
            'echarts/chart/pie': fileLocation,
            'echarts/chart/radar': fileLocation,
            'echarts/chart/map': fileLocation,
            'echarts/chart/chord': fileLocation,
            'echarts/chart/force': fileLocation,
       		 webkitDep : '../../doc/example/webkit-dep'
        }
    });
}

/*
require.config({
    paths:{ 
        echarts: '../../doc/example/www/js/echarts-map',
        'echarts/chart/line': '../../doc/example/www/js/echarts-map',
        'echarts/chart/bar': '../../doc/example/www/js/echarts-map',
        'echarts/chart/scatter': '../../doc/example/www/js/echarts-map',
        'echarts/chart/k': '../../doc/example/www/js/echarts-map',
        'echarts/chart/pie': '../../doc/example/www/js/echarts-map',
        'echarts/chart/radar': '../../doc/example/www/js/echarts-map',
        'echarts/chart/map': '../../doc/example/www/js/echarts-map',
        'echarts/chart/force': '../../doc/example/www/js/echarts-map',
        'echarts/chart/chord': '../../doc/example/www/js/echarts-map'
    }
});
*/
var echarts;
var webkitDepData;
require(
    [
        'echarts',
        'webkitDep',
        'echarts/chart/line',
        'echarts/chart/bar',
        'echarts/chart/scatter',
        'echarts/chart/k',
        'echarts/chart/pie',
        'echarts/chart/radar',
        'echarts/chart/force',
        'echarts/chart/chord',
        'echarts/chart/map'
    ],
    function(ec, wd) {
        echarts = ec;
        webkitDepData = wd;
        webkitDepData.minRadius = 5;
        webkitDepData.maxRadius = 8;
        webkitDepData.density = 1.1;
        webkitDepData.attractiveness = 1.3;
        webkitDepData.itemStyle = {
            normal : {
                linkStyle : {
                    opacity : 0.6
                }
            }
        }
        if (typeof curEvent != 'undefined') {
        	clearTimeout(showChartTimer);
        	getCurParams();
        	showChart()
            //showChartTimer = setTimeout(showChart, 500);
        }
    }
);

var curEvent;
var showChartTimer;
Reveal.addEventListener( 'ready', function(event){
    clearTimeout(showChartTimer);
    curEvent = event;
    getCurParams();
    showChartTimer = setTimeout(showChart, 800);
});

Reveal.addEventListener( 'slidechanged', function(event){
    clearTimeout(showChartTimer);
    curEvent = event;
    getCurParams();
    showChartTimer = setTimeout(showChart, 800);
});

var myChart;
var myChart2;
var myChart3;
var timeTicket;
var dom;
var optionKey;
function getCurParams(){
	clearInterval(timeTicket);
    var len = curEvent.currentSlide.childNodes.length;
    while(--len) {
        dom = curEvent.currentSlide.childNodes[len];
        if (dom.className == 'main'){
            optionKey = dom.getAttribute('optionKey');
            if (optionKey == 'multiCharts') {
            	if (myChart2 && myChart2.dispose) {
					myChart2.getDom().className = 'main';
			        myChart2.dispose();
			        myChart2 = null;
			    }
			    if (myChart3 && myChart3.dispose) {
					myChart3.getDom().className = 'main';
			        myChart3.dispose();
			        myChart3 = null;
			    }
            }
            return;
        }
    }
    optionKey = false;
}
function showChart() {
	if (!echarts) {return;}
	if (myChart && myChart.dispose) {
		myChart.getDom().className = 'main';
        myChart.dispose();
        myChart = null;
    }
    if (optionKey) {
    	myChart = echarts.init(dom);
	    var option = optionMap[optionKey];
	    dom.className = 'main noLoading';
		myChart.setOption(option);
	    if (functionMap[optionKey]) {
	        functionMap[optionKey]();
	    }
    }
}

var axisData = [
    "2013/1/24", "2013/1/25", "2013/1/28", "2013/1/29", "2013/1/30",
    "2013/1/31", "2013/2/1", "2013/2/4", "2013/2/5", "2013/2/6", 
    "2013/2/7", "2013/2/8", "2013/2/18", "2013/2/19", "2013/2/20", 
    "2013/2/21", "2013/2/22", "2013/2/25", "2013/2/26", "2013/2/27", 
    "2013/2/28", "2013/3/1", "2013/3/4", "2013/3/5", "2013/3/6", 
    "2013/3/7", "2013/3/8", "2013/3/11", "2013/3/12", "2013/3/13", 
    "2013/3/14", "2013/3/15", "2013/3/18", "2013/3/19", "2013/3/20", 
    "2013/3/21", "2013/3/22", "2013/3/25", "2013/3/26", "2013/3/27", 
    "2013/3/28", "2013/3/29", "2013/4/1", "2013/4/2", "2013/4/3", 
    "2013/4/8", "2013/4/9", "2013/4/10", "2013/4/11", "2013/4/12", 
    "2013/4/15", "2013/4/16", "2013/4/17", "2013/4/18", "2013/4/19", 
    "2013/4/22", "2013/4/23", "2013/4/24", "2013/4/25", "2013/4/26", 
    "2013/5/2", "2013/5/3", "2013/5/6", "2013/5/7", "2013/5/8", 
    "2013/5/9", "2013/5/10", "2013/5/13", "2013/5/14", "2013/5/15", 
    "2013/5/16", "2013/5/17", "2013/5/20", "2013/5/21", "2013/5/22", 
    "2013/5/23", "2013/5/24", "2013/5/27", "2013/5/28", "2013/5/29", 
    "2013/5/30", "2013/5/31", "2013/6/3", "2013/6/4", "2013/6/5", 
    "2013/6/6", "2013/6/7", "2013/6/13"
];
var kData = [ // 开盘，收盘，最低，最高
    [2320.26,2302.6,2287.3,2362.94],
    [2300,2291.3,2288.26,2308.38],
    [2295.35,2346.5,2295.35,2346.92],
    [2347.22,2358.98,2337.35,2363.8],
    [2360.75,2382.48,2347.89,2383.76],
    [2383.43,2385.42,2371.23,2391.82],
    [2377.41,2419.02,2369.57,2421.15],
    [2425.92,2428.15,2417.58,2440.38],
    [2411,2433.13,2403.3,2437.42],
    [2432.68,2434.48,2427.7,2441.73],
    [2430.69,2418.53,2394.22,2433.89],
    [2416.62,2432.4,2414.4,2443.03],
    [2441.91,2421.56,2415.43,2444.8],
    [2420.26,2382.91,2373.53,2427.07],
    [2383.49,2397.18,2370.61,2397.94],
    [2378.82,2325.95,2309.17,2378.82],
    [2322.94,2314.16,2308.76,2330.88],
    [2320.62,2325.82,2315.01,2338.78],
    [2313.74,2293.34,2289.89,2340.71],
    [2297.77,2313.22,2292.03,2324.63],
    [2322.32,2365.59,2308.92,2366.16],
    [2364.54,2359.51,2330.86,2369.65],
    [2332.08,2273.4,2259.25,2333.54],
    [2274.81,2326.31,2270.1,2328.14],
    [2333.61,2347.18,2321.6,2351.44],
    [2340.44,2324.29,2304.27,2352.02],
    [2326.42,2318.61,2314.59,2333.67],
    [2314.68,2310.59,2296.58,2320.96],
    [2309.16,2286.6,2264.83,2333.29],
    [2282.17,2263.97,2253.25,2286.33],
    [2255.77,2270.28,2253.31,2276.22],
    [2269.31,2278.4,2250,2312.08],
    [2267.29,2240.02,2239.21,2276.05],
    [2244.26,2257.43,2232.02,2261.31],
    [2257.74,2317.37,2257.42,2317.86],
    [2318.21,2324.24,2311.6,2330.81],
    [2321.4,2328.28,2314.97,2332],
    [2334.74,2326.72,2319.91,2344.89],
    [2318.58,2297.67,2281.12,2319.99],
    [2299.38,2301.26,2289,2323.48],
    [2273.55,2236.3,2232.91,2273.55],
    [2238.49,2236.62,2228.81,2246.87],
    [2229.46,2234.4,2227.31,2243.95],
    [2234.9,2227.74,2220.44,2253.42],
    [2232.69,2225.29,2217.25,2241.34],
    [2196.24,2211.59,2180.67,2212.59],
    [2215.47,2225.77,2215.47,2234.73],
    [2224.93,2226.13,2212.56,2233.04],
    [2236.98,2219.55,2217.26,2242.48],
    [2218.09,2206.78,2204.44,2226.26],
    [2199.91,2181.94,2177.39,2204.99],
    [2169.63,2194.85,2165.78,2196.43],
    [2195.03,2193.8,2178.47,2197.51],
    [2181.82,2197.6,2175.44,2206.03],
    [2201.12,2244.64,2200.58,2250.11],
    [2236.4,2242.17,2232.26,2245.12],
    [2242.62,2184.54,2182.81,2242.62],
    [2187.35,2218.32,2184.11,2226.12],
    [2213.19,2199.31,2191.85,2224.63],
    [2203.89,2177.91,2173.86,2210.58],
    [2170.78,2174.12,2161.14,2179.65],
    [2179.05,2205.5,2179.05,2222.81],
    [2212.5,2231.17,2212.5,2236.07],
    [2227.86,2235.57,2219.44,2240.26],
    [2242.39,2246.3,2235.42,2255.21],
    [2246.96,2232.97,2221.38,2247.86],
    [2228.82,2246.83,2225.81,2247.67],
    [2247.68,2241.92,2231.36,2250.85],
    [2238.9,2217.01,2205.87,2239.93],
    [2217.09,2224.8,2213.58,2225.19],
    [2221.34,2251.81,2210.77,2252.87],
    [2249.81,2282.87,2248.41,2288.09],
    [2286.33,2299.99,2281.9,2309.39],
    [2297.11,2305.11,2290.12,2305.3],
    [2303.75,2302.4,2292.43,2314.18],
    [2293.81,2275.67,2274.1,2304.95],
    [2281.45,2288.53,2270.25,2292.59],
    [2286.66,2293.08,2283.94,2301.7],
    [2293.4,2321.32,2281.47,2322.1],
    [2323.54,2324.02,2321.17,2334.33],
    [2316.25,2317.75,2310.49,2325.72],
    [2320.74,2300.59,2299.37,2325.53],
    [2300.21,2299.25,2294.11,2313.43],
    [2297.1,2272.42,2264.76,2297.1],
    [2270.71,2270.93,2260.87,2276.86],
    [2264.43,2242.11,2240.07,2266.69],
    [2242.26,2210.9,2205.07,2250.63],
    [2190.1,2148.35,2126.22,2190.1]
];

var functionMap = {};
var optionMap = {
    'calculable1' : {
        tooltip : {
            trigger: 'item',
            formatter: "{a} <br/>{b} : {c} ({d}%)"
        },
        legend: {
            orient : 'vertical',
            x : 'left',
            data:['Chrome','Firefox','Safari','IE9+','IE8','IE7','IE6-']
        },
        toolbox: {
            show : true,
            feature : {
                dataView : {show: true, readOnly: false},
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        calculable : true,
        series : [
            {
                name:'浏览器占比',
                type:'pie',
                radius : ['30%', '70%'],
                data:[
                    {value:535, name:'Chrome'},
                    {value:310, name:'Firefox'},
                    {value:234, name:'Safari'},
                    {value:235, name:'IE9+'},
                    {value:1035, name:'IE8'},
                    {value:1305, name:'IE7'},
                    {value:948, name:'IE6-'}
                ]
            }
        ]
    },
    'calculable2' : {
        tooltip : {
            trigger: 'axis'
        },
        legend: {
            x: 'left',
            data:['销售量']
        },
        toolbox: {
            show : true,
            feature : {
                mark : {show: true},
                dataView : {show: true, readOnly: false},
                magicType : {show: true, type: ['line', 'bar']},
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        calculable : true,
        xAxis : [
            {
                type : 'category',
                axisLabel : {
                    rotate: 45
                },
                data : function(){
                    var list = [];
                    for (var i = 1; i <= 30; i++) {
                        list.push('11 - ' + i);
                    }
                    return list;
                }()
            }
        ],
        yAxis : [
            {
                type : 'value',
                splitArea : {show : true}
            }
        ],
        series : [
            {
                name:'销售量',
                type:'bar',
                data:[
                    123,121,120,122,127,130,128,127,129,132,
                    2380,140,138,135,130,125,120,120,118,115,
                    105,95,100,94,85,83,78,80,73,68
                ]
            }
        ]
    },
    dataView : {
        tooltip : {
            trigger: 'axis',
            axisPointer : {            // 坐标轴指示器，坐标轴触发有效
                type : 'shadow'        // 默认为直线，可选为：'line' | 'shadow'
            }
        },
        legend: {
            data:['利润', '支出', '收入']
        },
        toolbox: {
            show : true,
            feature : {
                mark : {show: true},
                dataView : {show: true, readOnly: false},
                magicType: {show: true, type : ['line', 'bar']},
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        calculable : true,
        xAxis : [
            {
                type : 'value',
                splitArea: {show : true}
            }
        ],
        yAxis : [
            {
                type : 'category',
                data : ['周一','周二','周三','周四','周五','周六','周日']
            }
        ],
        series : [
            {
                name:'利润',
                type:'bar',
                itemStyle : { normal: {
                    color: 'rgba(248, 83, 0, 1)',
                    label : {show: true, position: 'inside'}}
                },
                data:[200, 170, 240, 244, 200, 220, 210]
            },
            {
                name:'收入',
                type:'bar',
                stack: '总量',
                barWidth : 5,
                itemStyle: {normal: {
                    color: 'rgba(255, 160, 0, 0.8)',//'rgba(138, 43, 226, 0.6)',
                    label : {show: true}
                }},
                data:[320, 302, 341, 374, 390, 450, 420]
            },
            {
                name:'支出',
                type:'bar',
                stack: '总量',
                itemStyle: {normal: {
                    color: 'rgba(30, 144, 255, 0.6)',
                    label : {show: true, position: 'left'}
                }},
                data:[-120, -132, -101, -134, -190, -230, -210]
            }
        ]
    },
    magicType : {
        tooltip : {
            trigger: 'axis'
        },
        legend: {
            data:['意向','预购','成交']
        },
        toolbox: {
            show : true,
            feature : {
                mark : {show: true},
                dataView : {show: true, readOnly: false},
                magicType: {show: true, type : ['line', 'bar', 'stack', 'tiled']},
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        calculable : true,
        xAxis : [
            {
                type : 'category',
                boundaryGap : true,
                data : ['周一','周二','周三','周四','周五','周六','周日']
            }
        ],
        yAxis : [
            {
                type : 'value'
            }
        ],
        series : [
            {
                name:'意向',
                type:'bar',
                smooth:true,
                itemStyle: {normal: {areaStyle: {type: 'default'}}},
                data:[1320, 1132, 601, 234, 120, 90, 20]
            },
            {
                name:'预购',
                type:'bar',
                smooth:true,
                itemStyle: {normal: {areaStyle: {type: 'default'}}},
                data:[30, 182, 434, 791, 390, 30, 10]
            },
            {
                name:'成交',
                type:'bar',
                smooth:true,
                itemStyle: {normal: {areaStyle: {type: 'default'}}},
                data:[10, 12, 21, 54, 260, 830, 710]
            }
        ]
    },
    dataRange1 : {
        title : {
            text: '2011全国GDP（亿元）',
            subtext: '数据来自国家统计局'
        },
        tooltip : {
            trigger: 'item'
        },
        dataRange: {
            min: 0,
            max: 55000,
            text:['高','低'],           // 文本，默认为数值文本
            color:[ 'red', 'yellow'],//颜色 
            calculable : true
        },
        toolbox: {
            show : true,
            feature : {
                mark : {show: true},
                dataView : {show: true, readOnly: false},
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        series : [
            {
                name: '2011全国GDP',
                type: 'map',
                mapType: 'china',
                itemStyle:{
                    normal:{label:{show:true}}
                },
                data:[
                    {name:'西藏', value:605.83},
                    {name:'青海', value:1670.44},
                    {name:'宁夏', value:2102.21},
                    {name:'海南', value:2522.66},
                    {name:'甘肃', value:5020.37},
                    {name:'贵州', value:5701.84},
                    {name:'新疆', value:6610.05},
                    {name:'云南', value:8893.12},
                    {name:'重庆', value:10011.37},
                    {name:'吉林', value:10568.83},
                    {name:'山西', value:11237.55},
                    {name:'天津', value:11307.28},
                    {name:'江西', value:11702.82},
                    {name:'广西', value:11720.87},
                    {name:'陕西', value:12512.3},
                    {name:'黑龙江', value:12582},
                    {name:'内蒙古', value:14359.88},
                    {name:'安徽', value:15300.65},
                    {name:'北京', value:16251.93},
                    {name:'福建', value:17560.18},
                    {name:'上海', value:19195.69},
                    {name:'湖北', value:19632.26},
                    {name:'湖南', value:19669.56},
                    {name:'四川', value:21026.68},
                    {name:'辽宁', value:22226.7},
                    {name:'河北', value:24515.76},
                    {name:'河南', value:26931.03},
                    {name:'浙江', value:32318.85},
                    {name:'山东', value:45361.85},
                    {name:'江苏', value:49110.27},
                    {name:'广东', value:53210.28}
                ]
            }
        ]
    },
    dataZoom1 : {
        tooltip : {
            trigger: 'axis',
            formatter: function(params) {
                var res = params[1][1];
                res += '<br/>' + params[1][0];
                res += '<br/>  开盘 : ' + params[1][2][0] + '  最高 : ' + params[1][2][3];
                res += '<br/>  收盘 : ' + params[1][2][1] + '  最低 : ' + params[1][2][2];
                res += '<br/>' + params[0][0];
                res += ' : ' + params[0][2];
                return res;
            }
        },
        legend: {
            data:['上证指数','成交金额(万)']
        },
        toolbox: {
            show : true,
            feature : {
                mark : {show: true},
                dataZoom : {show: true},
                dataView : {show: true, readOnly: false},
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        dataZoom : {
            show : true,
            realtime: true,
            start : 50,
            end : 100
        },
        xAxis : [
            {
                type : 'category',
                boundaryGap : true,
                axisTick: {onGap:false},
                data : axisData
            }
        ],
        yAxis : [
            {
                type : 'value',
                scale:true,
                precision: 2,
                splitNumber: 9,
                boundaryGap: [0.05, 0.05],
                splitArea : {show : true}
            },
            {
                type : 'value',
                scale:true,
                splitNumber: 9,
                boundaryGap: [0.05, 0.05],
                axisLabel: {
	                formatter: function(v) {
	                    return Math.round(v/10000) + ' 万'
	                }
	            },
                splitArea : {show : true}
            }
        ],
        series : [
            {
                name:'成交金额(万)',
                type:'line',
                yAxisIndex: 1,
                symbol: 'none',
                itemStyle:{
                    normal:{
                        color:'#1e90ff'
                    }
                },
                data:[
                    13560434, 8026738.5, 11691637, 12491697, 12485603, 
                    11620504, 12555496, 15253370, 12709611, 10458354, 
                    10933507, 9896523, 10365702, 10633095, 9722230, 
                    12662783, 8757982, 7764234, 10591719, 8826293, 
                    11591827, 11153111, 14304651, 11672120, 12536480, 
                    12608589, 8843860, 7391994.5, 10063709, 7768895.5, 
                    6921859, 10157810, 8148617.5, 7551207, 11397426, 
                    10478607, 8595132, 8541862, 9181132, 8570842, 
                    10759351, 7335819, 6699753.5, 7759666.5, 6880135.5, 
                    7366616.5, 7313504, 7109021.5, 6213270, 5619688, 
                    5816217.5, 6695584.5, 5998655.5, 6188812.5, 9538301,
                    8224500, 8221751.5, 7897721, 8448324, 6525151, 
                    5987761, 7831570, 8162560.5, 7904092, 8139084.5, 
                    9116529, 8128014, 7919148, 7566047, 6665826.5, 
                    10225527, 11124881, 12884353, 11302521, 11529046, 
                    11105205, 9202153, 9992016, 12035250, 11431155, 
                    10354677, 10070399, 9164861, 9237718, 7114268, 
                    7526158.5, 8105835, 7971452.5
                ],
                markPoint : {
                	symbol: 'emptyPin',
                	itemStyle : {
                		normal : {
                			color:'#1e90ff',
                			label : {
                				show:true,
                				position:'top',
				                formatter: function(a,b,v) {
				                    return Math.round(v/10000) + ' 万'
				                }
                			}
                		}
                	},
	                data : [
	                    {type : 'max', name: '最大值', symbolSize:5},
	                    {type : 'min', name: '最小值', symbolSize:5}
	                ]
	            },
	            markLine : {
	            	symbol : 'none',
	            	itemStyle : {
                		normal : {
                			color:'#1e90ff',
                			label : {
                				show:true,
				                formatter: function(a,b,v) {
				                    return Math.round(v/10000) + ' 万'
				                }
                			}
                		}
                	},
	                data : [
	                    {type : 'average', name: '平均值'}
	                ]
	            }
            },
            {
                name:'上证指数',
                type:'k',
                data: kData
            }
        ]
    },
    multiCharts : (function(){
        functionMap.multiCharts = function(){
            var option2 = {
                tooltip : {
                    trigger: 'axis',
                    showDelay: 0
                },
                legend: {
                    y : -30,
                    data:['上证指数','成交金额(万)','虚拟数据']
                },
                toolbox: {
                    y : -30,
                    show : true,
                    feature : {
                        mark : {show: true},
                        dataZoom : {show: true},
                        dataView : {show: true, readOnly: false},
                        magicType : {show: true, type: ['line', 'bar']},
                        restore : {show: true},
                        saveAsImage : {show: true}
                    }
                },
                dataZoom : {
                    show : true,
                    realtime: true,
                    start : 50,
                    end : 100
                },
                grid: {
                    x: 80,
                    y:5,
                    x2:20,
                    y2:40
                },
                xAxis : [
                    {
                        type : 'category',
                        position:'top',
                        boundaryGap : true,
                        axisLabel:{show:false},
                        axisTick: {onGap:false},
                        splitLine: {show:false},
                        data : axisData
                    }
                ],
                yAxis : [
                    {
                        type : 'value',
                        scale:true,
                        splitNumber: 3,
                        boundaryGap: [0.05, 0.05],
                        axisLabel: {
			                formatter: function(v) {
			                    return Math.round(v/10000) + ' 万'
			                }
			            },
                        splitArea : {show : true}
                    }
                ],
                series : [
                    {
                        name:'成交金额(万)',
                        type:'line',
                        symbol: 'none',
                        data:[
                            13560434, 8026738.5, 11691637, 12491697, 12485603, 
                            11620504, 12555496, 15253370, 12709611, 10458354, 
                            10933507, 9896523, 10365702, 10633095, 9722230, 
                            12662783, 8757982, 7764234, 10591719, 8826293, 
                            11591827, 11153111, 14304651, 11672120, 12536480, 
                            12608589, 8843860, 7391994.5, 10063709, 7768895.5, 
                            6921859, 10157810, 8148617.5, 7551207, 11397426, 
                            10478607, 8595132, 8541862, 9181132, 8570842, 
                            10759351, 7335819, 6699753.5, 7759666.5, 6880135.5, 
                            7366616.5, 7313504, 7109021.5, 6213270, 5619688, 
                            5816217.5, 6695584.5, 5998655.5, 6188812.5, 9538301,
                            8224500, 8221751.5, 7897721, 8448324, 6525151, 
                            5987761, 7831570, 8162560.5, 7904092, 8139084.5, 
                            9116529, 8128014, 7919148, 7566047, 6665826.5, 
                            10225527, 11124881, 12884353, 11302521, 11529046, 
                            11105205, 9202153, 9992016, 12035250, 11431155, 
                            10354677, 10070399, 9164861, 9237718, 7114268, 
                            7526158.5, 8105835, 7971452.5
                        ]
                    }
                ]
            };
            document.getElementById('mcMain2').className = 'main noLoading';
            myChart2 = echarts.init(document.getElementById('mcMain2'));
            myChart2.setOption(option2);

            var option3 = {
                tooltip : {
                    trigger: 'axis',
                    showDelay: 0
                },
                legend: {
                    y : -30,
                    data:['上证指数','成交金额(万)','虚拟数据']
                },
                toolbox: {
                    y : -30,
                    show : true,
                    feature : {
                        mark : {show: true},
                        dataZoom : {show: true},
                        dataView : {show: true, readOnly: false},
                        magicType : {show: true, type: ['line', 'bar']},
                        restore : {show: true},
                        saveAsImage : {show: true}
                    }
                },
                dataZoom : {
                    y:200,
                    show : true,
                    realtime: true,
                    start : 50,
                    end : 100
                },
                grid: {
                    x: 80,
                    y:5,
                    x2:20,
                    y2:30
                },
                xAxis : [
                    {
                        type : 'category',
                        position:'bottom',
                        boundaryGap : true,
                        axisTick: {onGap:false},
                        splitLine: {show:false},
                        data : axisData
                    }
                ],
                yAxis : [
                    {
                        type : 'value',
                        scale:true,
                        splitNumber:3,
                        boundaryGap: [0.05, 0.05],
                        axisLabel: {
			                formatter: function(v) {
			                    return Math.round(v/10000) + ' 万'
			                }
			            },
                        splitArea : {show : true}
                    }
                ],
                series : [
                    {
                        name:'虚拟数据',
                        type:'bar',
                        symbol: 'none',
                        data:[
                            560434, 226738, 696370, 249697, 248563, 
                            620504, 555496, 525337, 270968, 458354, 
                            933507, 896523, 365702, 633095, 722230, 
                            662783, 875798, 776423, 105979, 882629, 
                            598278, 231253, 430465, 672208, 253648, 
                            608589, 884386, 739994, 263709, 776889, 
                            692859, 105780, 848675, 755207, 397426, 
                            478607, 859532, 854862, 983288, 857084, 
                            759358, 733589, 669975, 775965, 688035, 
                            736666, 733504, 709025, 623270, 569688, 
                            586275, 669558, 599865, 688825, 953830,
                            822450, 822755, 789772, 844832, 652558, 
                            598776, 783570, 862560, 794092, 839084, 
                            965298, 828048, 799480, 756647, 665826, 
                            102257, 248870, 288435, 302528, 529046, 
                            105205, 920253, 999206, 203525, 435588, 
                            103546, 703990, 964868, 923778, 742688,
                            752658, 805835, 797452
                        ]
                    }
                ]
            };
            document.getElementById('mcMain3').className = 'main noLoading';
            myChart3 = echarts.init(document.getElementById('mcMain3'));
            myChart3.setOption(option3);

            myChart.connect([myChart2, myChart3]);
            myChart2.connect([myChart, myChart3]);
            myChart3.connect([myChart, myChart2])
        }
        return {
            title : {
                text: '2013年上半年上证指数'
            },
            tooltip : {
                trigger: 'axis',
                showDelay: 0,             // 显示延迟，添加显示延迟可以避免频繁切换，单位ms
                formatter: function(params) {
                    var res = params[0][1];
                    res += '<br/>' + params[0][0];
                    res += '<br/>  开盘 : ' + params[0][2][0] + '  最高 : ' + params[0][2][3];
                    res += '<br/>  收盘 : ' + params[0][2][1] + '  最低 : ' + params[0][2][2];
                    return res;
                }
            },
            legend: {
                data:['上证指数','成交金额(万)','虚拟数据']
            },
            toolbox: {
                show : true,
                feature : {
                    mark : {show: true},
                    dataZoom : {show: true},
                    magicType : {show: true, type: ['line', 'bar']},
                    restore : {show: true},
                    saveAsImage : {show: true}
                }
            },
            dataZoom : {
                y: 250,
                show : true,
                realtime: true,
                start : 50,
                end : 100
            },
            grid: {
                x: 80,
                y: 40,
                x2:20,
                y2:25
            },
            xAxis : [
                {
                    type : 'category',
                    boundaryGap : true,
                    axisTick: {onGap:false},
                    splitLine: {show:false},
                    data : axisData
                }
            ],
            yAxis : [
                {
                    type : 'value',
                    scale:true,
                    precision: 2,
                    boundaryGap: [0.05, 0.05],
                    splitArea : {show : true}
                }
            ],
            series : [
                {
                    name:'上证指数',
                    type:'k',
                    data: kData
                },
                {
                    name:'成交金额(万)',
                    type:'line',
                    symbol: 'none',
                    data:[]
                },
                {
                    name:'虚拟数据',
                    type:'bar',data:[]
                }
                
            ]
        };
    })(),
    scatter : {
        tooltip : {
            trigger: 'item'
        },
        legend: {
            data:['sin','cos']
        },
        toolbox: {
            show : true,
            feature : {
                mark : {show: true},
                dataZoom : {show: true},
                dataView : {show: true, readOnly: false},
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        xAxis : [
            {
                type : 'value',
                power: 1,
                precision: 2,
                scale:true
            }
        ],
        yAxis : [
            {
                type : 'value',
                power: 1,
                precision: 2,
                scale:true,
                splitArea : {show : true}
            }
        ],
        series : [
            {
                name:'sin',
                type:'scatter',
                large: true,
                symbol:'circle',
                data: (function() {
                    var d = [];
                    var len = 25000;
                    var x = 0;
                    while (len--) {
                        x = (Math.random() * 10).toFixed(3) - 0;
                        d.push([
                            x,
                            //Math.random() * 10
                            (Math.sin(x) - x * (len % 2 ? 0.1 : -0.1) * Math.random()).toFixed(3) - 0
                        ]);
                    }
                    return d;
                })()
            },
            {
                name:'cos',
                type:'scatter',
                large: true,
                symbol:'circle',
                data: (function() {
                    var d = [];
                    var len = 25000;
                    var x = 0;
                    while (len--) {
                        x = (Math.random() * 10).toFixed(3) - 0;
                        d.push([
                            x,
                            //Math.random() * 10
                            (Math.cos(x) - x * (len % 2 ? 0.1 : -0.1) * Math.random()).toFixed(3) - 0
                        ]);
                    }
                    return d;
                })()
            }
        ]
    },
    force : (function() {
            functionMap.force = function() {
                myChart.setOption({
                    tooltip : {
                        trigger: 'item',
                        formatter: '{a} : {b}'
                    },
                    legend: {
                        x: 'left',
                        data:['家人','朋友']
                    },
                    series : [
                        {
                            type:'force',
                            categories : [
                                {
                                    name: '人物',
                                    itemStyle: {
                                        normal: {
                                            color : '#ff7f50'
                                        }
                                    }
                                },
                                {
                                    name: '家人',
                                    itemStyle: {
                                        normal: {
                                            color : '#87cdfa'
                                        }
                                    }
                                },
                                {
                                    name:'朋友',
                                    itemStyle: {
                                        normal: {
                                            color : '#9acd32'
                                        }
                                    }
                                }
                            ],
                            itemStyle: {
                                normal: {
                                    label: {
                                        show: true,
                                        textStyle: {
                                            color: '#800080'
                                        }
                                    },
                                    nodeStyle : {
                                        brushType : 'both',
                                        strokeColor : 'rgba(255,215,0,0.4)',
                                        lineWidth : 8
                                    }
                                },
                                emphasis: {
                                    label: {
                                        show: false
                                        // textStyle: null      // 默认使用全局文本样式，详见TEXTSTYLE
                                    },
                                    nodeStyle : {
                                        r: 30
                                    },
                                    linkStyle : {}
                                }
                            },
                            minRadius : 15,
                            maxRadius : 25,
                            density : 0.05,
                            attractiveness: 1.2,
                            nodes:[
                                {category:0, name: '乔布斯', value : 10},
                                {category:1, name: '丽萨-乔布斯',value : 2},
                                {category:1, name: '保罗-乔布斯',value : 3},
                                {category:1, name: '克拉拉-乔布斯',value : 3},
                                {category:1, name: '劳伦-鲍威尔',value : 7},
                                {category:2, name: '史蒂夫-沃兹尼艾克',value : 5},
                                {category:2, name: '奥巴马',value : 8},
                                {category:2, name: '比尔-盖茨',value : 9},
                                {category:2, name: '乔纳森-艾夫',value : 4},
                                {category:2, name: '蒂姆-库克',value : 4},
                                {category:2, name: '龙-韦恩',value : 1},
                            ],
                            links : [
                                {source : 1, target : 0, weight : 1},
                                {source : 2, target : 0, weight : 2},
                                {source : 3, target : 0, weight : 1},
                                {source : 4, target : 0, weight : 2},
                                {source : 5, target : 0, weight : 3},
                                {source : 6, target : 0, weight : 6},
                                {source : 7, target : 0, weight : 6},
                                {source : 8, target : 0, weight : 1},
                                {source : 9, target : 0, weight : 1},
                                {source : 10, target : 0, weight : 1},
                                {source : 3, target : 2, weight : 1},
                                {source : 6, target : 2, weight : 1},
                                {source : 6, target : 3, weight : 1},
                                {source : 6, target : 4, weight : 1},
                                {source : 6, target : 5, weight : 1},
                                {source : 7, target : 6, weight : 6},
                                {source : 7, target : 3, weight : 1},
                                {source : 9, target : 6, weight : 1}
                            ]
                        }
                    ]
                }, true);
            }
            functionMap.force2 = function() {
                myChart.setOption({
                    tooltip : {
                        trigger: 'item'
                    },
                    legend : {
                        data : ['HTMLElement', 'WebGL', 'SVG', 'CSS', 'Other'],
                        orient : 'vertical',
                        x : 'left'
                    },
                    series : [webkitDepData]
                }, true);
            }
            return {};
    })(),
    dynamic : (function(){
        functionMap.dynamic = function() {
            var lastData = 11;
            var axisData;            
            timeTicket = setInterval(function(){
                lastData += Math.random() * ((Math.round(Math.random() * 10) % 2) == 0 ? 1 : -1);
                lastData = lastData.toFixed(1) - 0;
                axisData = (new Date()).toLocaleTimeString().replace(/^\D*/,'');
                
                // 动态数据接口 addData
                myChart.addData([
                    [
                        0,        // 系列索引
                        Math.round(Math.random() * 1000), // 新增数据
                        true,     // 新增数据是否从队列头部插入
                        false     // 是否增加队列长度，false则自定删除原有数据，队头插入删队尾，队尾插入删队头
                    ],
                    [
                        1,        // 系列索引
                        lastData, // 新增数据
                        false,    // 新增数据是否从队列头部插入
                        false,    // 是否增加队列长度，false则自定删除原有数据，队头插入删队尾，队尾插入删队头
                        axisData  // 坐标轴标签
                    ]
                ]);
            }, 1500);
        };
        return {
            title : {
                text: '动态数据',
                subtext: '纯属虚构'
            },
            tooltip : {
                trigger: 'axis'
            },
            legend: {
                data:['最新成交价', '预购队列']
            },
            toolbox: {
                show : true,
                feature : {
                    mark : {show: true},
                    dataView : {show: true, readOnly: false},
                    magicType: {show: true, type : ['line', 'bar']},
                    restore : {show: true},
                    saveAsImage : {show: true}
                }
            },
            dataZoom : {
                show : false,
                realtime: true,
                start : 50,
                end : 100
            },
            xAxis : [
                {
                    type : 'category',
                    boundaryGap : true,
                    data : (function(){
                        var now = new Date();
                        var res = [];
                        var len = 10;
                        while (len--) {
                            res.unshift(now.toLocaleTimeString().replace(/^\D*/,''));
                            now = new Date(now - 2000);
                        }
                        return res;
                    })()
                },
                {
                    type : 'category',
                    boundaryGap : true,
                    splitline : {show : false},
                    data : (function(){
                        var res = [];
                        var len = 10;
                        while (len--) {
                            res.push(len + 1);
                        }
                        return res;
                    })()
                }
            ],
            yAxis : [
                {
                    type : 'value',
                    scale: true,
                    precision:1,
                    power:1,
                    name : '价格',
                    boundaryGap: [0.2, 0.2],
                    splitArea : {show : true}
                },
                {
                    type : 'value',
                    scale: true,
                    name : '预购量',
                    boundaryGap: [0.2, 0.2]
                }
            ],
            series : [
                {
                    name:'预购队列',
                    type:'bar',
                    xAxisIndex: 1,
                    yAxisIndex: 1,
                    itemStyle: {
                        normal: {
                            color : 'rgba(135,206,205,0.4)'
                        }
                    },
                    data:(function(){
                        var res = [];
                        var len = 10;
                        while (len--) {
                            res.push(Math.round(Math.random() * 1000));
                        }
                        return res;
                    })()
                },
                {
                    name:'最新成交价',
                    type:'line',
                    itemStyle: {
                        normal: {
                            // areaStyle: {type: 'default'},
                            lineStyle: {
                                shadowColor : 'rgba(0,0,0,0.4)'
                            }
                        }
                    },
                    data:(function(){
                        var res = [];
                        var len = 10;
                        while (len--) {
                            res.push((Math.random()*10 + 5).toFixed(1) - 0);
                        }
                        return res;
                    })()
                }
            ]
        }
    })(),
    legendSelected : {
        color : [
            '#FBB367','#80B1D2','#FB8070','#CC99FF','#B0D961',
            '#99CCCC','#BEBBD8','#FFCC99','#8DD3C8','#FF9999',
            '#CCEAC4','#BB81BC','#FBCCEC','#CCFF66','#99CC66',
            '#66CC66','#FF6666','#FFED6F','#ff7f50','#87cefa',
        ],
        title : {
            text : '中东地区的敌友关系',
            subtext: '数据来自财新网',
            sublink: 'http://international.caixin.com/2013-09-06/100579154.html',
            x:'right',
            y:'bottom'
        },
        tooltip : {
            trigger: 'item',
            formatter : function(params) {
                var g1 = params[1];
                var serie = params[0];
                var g2 = params[3];
                var data = params[2];
                var data2 = params[4];
                if (data2) {
                    if (data > data2) {
                        return [g1, serie, g2].join(' ');
                    } else {
                        return [g2, serie, g1].join(' ');
                    }
                } else {
                    return g1
                }
            }
        },
        legend : {
            data : [
                '美国',
                '叙利亚反对派',
                '阿萨德',
                '伊朗',
                '塞西',
                '哈马斯',
                '以色列',
                '穆斯林兄弟会',
                '基地组织',
                '俄罗斯',
                '黎巴嫩什叶派',
                '土耳其',
                '卡塔尔',
                '沙特',
                '黎巴嫩逊尼派',
                '',
                '支持',
                '反对',
                '未表态'
            ],
            orient : 'vertical',
            x : 'left'
        },
        series : [
            {
                "name": "支持",
                "type": "chord",
                "showScaleText": false,
                "data": [
                    {"name": "美国"},
                    {"name": "叙利亚反对派"},
                    {"name": "阿萨德"},
                    {"name": "伊朗"},
                    {"name": "塞西"},
                    {"name": "哈马斯"},
                    {"name": "以色列"},
                    {"name": "穆斯林兄弟会"},
                    {"name": "基地组织"},
                    {"name": "俄罗斯"},
                    {"name": "黎巴嫩什叶派"},
                    {"name": "土耳其"},
                    {"name": "卡塔尔"},
                    {"name": "沙特"},
                    {"name": "黎巴嫩逊尼派"}
                ],
                "matrix": [
                    [0,100,0,0,0,0,100,0,0,0,0,0,0,0,0],
                    [10,0,0,0,0,10,10,0,10,0,0,10,10,10,10],
                    [0,0,0,10,0,0,0,0,0,10,10,0,0,0,0],
                    [0,0,100,0,0,100,0,0,0,0,100,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,10,0],
                    [0,100,0,10,0,0,0,0,0,0,0,0,10,0,0],
                    [10,100,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,10,10,0,0],
                    [0,100,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,100,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,100,10,0,0,0,0,0,0,0,0,0,0,0],
                    [0,100,0,0,0,0,0,100,0,0,0,0,0,0,0],
                    [0,100,0,0,0,100,0,100,0,0,0,0,0,0,0],
                    [0,100,0,0,100,0,0,0,0,0,0,0,0,0,100],
                    [0,100,0,0,0,0,0,0,0,0,0,0,0,10,0]
                ]
            },
            {
                "name": "反对",
                "type": "chord",
                "showScaleText": false,
                "data": [
                    {"name": "美国"},
                    {"name": "叙利亚反对派"},
                    {"name": "阿萨德"},
                    {"name": "伊朗"},
                    {"name": "塞西"},
                    {"name": "哈马斯"},
                    {"name": "以色列"},
                    {"name": "穆斯林兄弟会"},
                    {"name": "基地组织"},
                    {"name": "俄罗斯"},
                    {"name": "黎巴嫩什叶派"},
                    {"name": "土耳其"},
                    {"name": "卡塔尔"},
                    {"name": "沙特"},
                    {"name": "黎巴嫩逊尼派"}
                ],
                "matrix": [
                    [0,0,100,100,0,100,0,0,100,0,0,0,0,0,0],
                    [0,0,0,10,0,0,0,0,0,10,10,0,0,0,0],
                    [10,0,0,0,0,0,10,10,10,0,0,10,10,0,10],
                    [10,100,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,10,0,100,0,0,0,10,10,0,0],
                    [10,0,0,0,100,0,10,0,0,0,0,0,0,0,0],
                    [0,0,100,0,0,100,0,0,0,0,0,0,0,0,0],
                    [0,0,100,0,10,0,0,0,0,0,0,0,0,10,0],
                    [10,0,100,0,0,0,0,0,0,0,0,0,0,100,0],
                    [0,100,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,100,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,100,0,100,0,0,0,0,0,0,0,0,0,0],
                    [0,0,100,0,100,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,100,10,0,0,0,0,0,0],
                    [0,0,100,0,0,0,0,0,0,0,0,0,0,0,0]
                ]
            },
            {
                "name": "未表态",
                "type": "chord",
                "showScaleText": false,
                "data": [
                    {"name": "美国"},
                    {"name": "叙利亚反对派"},
                    {"name": "阿萨德"},
                    {"name": "伊朗"},
                    {"name": "塞西"},
                    {"name": "哈马斯"},
                    {"name": "以色列"},
                    {"name": "穆斯林兄弟会"},
                    {"name": "基地组织"},
                    {"name": "俄罗斯"},
                    {"name": "黎巴嫩什叶派"},
                    {"name": "土耳其"},
                    {"name": "卡塔尔"},
                    {"name": "沙特"},
                    {"name": "黎巴嫩逊尼派"}
                ],
                "matrix": [
                    [0,0,0,0,100,0,0,100,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [10,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [10,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
                ]
            }
        ]
    },
    stack : {
        tooltip : {
            trigger: 'axis',
            axisPointer:{
                type:'shadow'
            }
        },
        legend: {
            data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎','百度','谷歌','必应','其他']
        },
        toolbox: {
            show : true,
            orient: 'vertical',
            x: 'right',
            y: 'center',
            feature : {
                mark : {show: true},
                dataView : {show: true, readOnly: false},
                magicType: {show: true, type : ['line', 'bar']},
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        calculable : true,
        xAxis : [
            {
                type : 'category',
                data : ['周一','周二','周三','周四','周五','周六','周日']
            }
        ],
        yAxis : [
            {
                type : 'value',
                splitArea : {show : true}
            }
        ],
        series : [
            {
                name:'直接访问',
                type:'bar',
                data:[320, 332, 301, 334, 390, 330, 320]
            },
            {
                name:'邮件营销',
                type:'bar',
                stack: '广告',
                data:[120, 132, 101, 134, 90, 230, 210]
            },
            {
                name:'联盟广告',
                type:'bar',
                stack: '广告',
                data:[220, 182, 191, 234, 290, 330, 310]
            },
            {
                name:'视频广告',
                type:'bar',
                stack: '广告',
                data:[150, 232, 201, 154, 190, 330, 410]
            },
            {
                name:'搜索引擎',
                type:'bar',
                data:[862, 1018, 964, 1026, 1679, 1600, 1570]
            },
            {
                name:'百度',
                type:'bar',
                barWidth : 5,
                stack: '搜索引擎',
                data:[620, 732, 701, 734, 1090, 1130, 1120]
            },
            {
                name:'谷歌',
                type:'bar',
                stack: '搜索引擎',
                data:[120, 132, 101, 134, 290, 230, 220]
            },
            {
                name:'必应',
                type:'bar',
                stack: '搜索引擎',
                data:[60, 72, 71, 74, 190, 130, 110]
            },
            {
                name:'其他',
                type:'bar',
                stack: '搜索引擎',
                data:[62, 82, 91, 84, 109, 110, 120]
            }
        ]
    },
    mix1 : {
    	color: ['#ff7f50','#87cefa','#da70d6','#ff69b4','#ba55d3','#32cd32','#6495ed'],
        tooltip : {
            trigger: 'axis'
        },
        toolbox: {
            show : true,
            feature : {
                mark : {show: true},
                dataView : {show: true, readOnly: false},
                magicType: {show: true, type : ['line', 'bar']},
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        calculable : true,
        legend: {
        	x : 'left',
            data:['蒸发量','降水量','平均温度','日蒸发量','夜蒸发量','日降水量','夜降水量']
        },
        xAxis : [
            {
                type : 'category',
                data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
            }
        ],
        yAxis : [
            {
                type : 'value',
                axisLabel : {
                    formatter: '{value} ml'
                },
                splitArea : {show : true}
            },
            {
                type : 'value',
                axisLabel : {
                    formatter: '{value} °C'
                },
                splitLine : {show : false}
            }
        ],
        series : [
        	{
                name:'总和',
                type:'pie',
                tooltip : {
                    trigger: 'item',
                    formatter: '{a} <br/>{b} : {c} ({d}%)'
                },
                center: [230,130],
                radius : [0, 50],
                itemStyle :　{
                    normal : {
                        labelLine : {
                            length : 20
                        }
                    }
                },
                data:[
                	{value:356.5, name:'日降水量'},
                    {value:220.4, name:'夜降水量'},
                    {value:59.0, name:'夜蒸发量'},
                    {value:440.5, name:'日蒸发量'}
                ]
            },
            {
                name:'蒸发量',
                type:'bar',
                data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
            },
            {
                name:'降水量',
                type:'bar',
                data:[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
            },
            {
                name:'平均温度',
                type:'line',
                yAxisIndex: 1,
                data:[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
            }
        ]
    },
    mix2 : (function(){
    	var sData1 = (function() {
		    var d = [];
		    var len = 40;
		    var value;
		    while (len--) {
		        d.push([
		            Math.round(Math.random()*10) * (Math.round(Math.random()*10) > 5 ? 1 : -1),
		            Math.round(Math.random()*10) * (Math.round(Math.random()*10) > 5 ? 1 : -1),
		            Math.round(Math.random()*20)
		        ]);
		    }
		    return d;
		})();
		var sData2 = (function() {
		    var d = [];
		    var len = sData1.length;
		    for (var i = 0; i < len; i++) {
		        d.push([
		            sData1[i][0],
		            sData1[i][1],
		            Math.round(Math.random()*15)
		        ]);
		    }
		    return d;
		})();

		functionMap.mix2 = function (){
		    var xAxis = myChart.component.xAxis.getAxis(0);
		    var yAxis = myChart.component.yAxis.getAxis(0);
		    var len = sData1.length;
		    var option = myChart.getOption();
		    option.series = option.series.slice(0,2);
		    while (len--) {
		        option.series.push({
		            type: 'pie',
		            itemStyle : {
		                normal : {
		                    label : {
		                        show : false
		                    },
		                    labelLine : {
		                        show : false
		                    }
		                }
		            },
		            //radius : [(sData1[len][2] + sData2[len][2])/2.5, (sData1[len][2] + sData2[len][2])/2.5 + 15],
		            radius : (sData1[len][2] + sData2[len][2])/2.5 + 15,
		            center: [
		                xAxis.getCoord(sData1[len][0]), 
		                yAxis.getCoord(sData1[len][1])
		            ],
		            data: [
		                {name: '系列1', value: sData1[len][2]},
		                {name: '系列2', value: sData2[len][2]}
		            ]
		        })
		    }
		    option.animation = true;
		    myChart.setOption(option);
		}

		return {
		    color : ['rgba(255, 69, 0, 0.5)', 'rgba(30, 144, 255, 0.5)'],
		    title : {
		        text: '饼图代替散点',
		        subtext : '混搭（随机数据）'
		    },
		    tooltip : {
		        trigger: 'item',
		         formatter: "{b} : {c} ({d}%)"
		    },
		    legend : {
		        data : ['系列1', '系列2']
		    },
		    toolbox: {
		        show : true,
		        feature : {
		            mark : {show: true},
		            dataView : {show: true, readOnly: false},
		            restore : {show: true},
		            saveAsImage : {show: true}
		        }
		    },
		    xAxis : [
		        {
		            type : 'value',
		            splitNumber: 2,
		            splitLine : {lineStyle:{color:'#48b',width:2}},
		            splitArea: {show:true},
		            axisLine : {show:false}
		        }
		    ],
		    yAxis : [
		        {
		            type : 'value',
		            splitNumber: 2,
		            splitLine : {lineStyle:{color:'#48b',width:2}},
		            splitArea : {show : true},
		            axisLine : {show:false}
		        }
		    ],
		    animation: false,
		    series : [
		        {
		            type:'scatter',
		            symbol: 'none',
		            data: sData1
		        },
		        {
		            type:'scatter',
		            symbol: 'none',
		            data: sData2
		        }
		    ]
		};
		
    })(),
    mix3 : {
        tooltip : {
            trigger: 'item'
        },
        legend: {
            x:'right',
            selectedMode:false,
            data:['北京','上海','广东']
        },
        dataRange: {
            orient: 'horizontal',
            min: 0,
            max: 55000,
            text:['高','低'],           // 文本，默认为数值文本
            splitNumber:0
        },
        toolbox: {
            show : true,
            orient: 'vertical',
            x:'right',
            y:'center',
            feature : {
                mark : {show: true},
                dataView : {show: true, readOnly: false}
            }
        },
        series : [
            {
                name: 'iphone销量',
                type: 'map',
                mapType: 'china',
                mapLocation: {
                    x: 'left'
                },
                selectedMode : 'multiple',
                itemStyle:{
                    normal:{label:{show:true}},
                    emphasis:{label:{show:true}}
                },
                data:[
                    {name:'西藏', value:605.83},
                    {name:'青海', value:1670.44},
                    {name:'宁夏', value:2102.21},
                    {name:'海南', value:2522.66},
                    {name:'甘肃', value:5020.37},
                    {name:'贵州', value:5701.84},
                    {name:'新疆', value:6610.05},
                    {name:'云南', value:8893.12},
                    {name:'重庆', value:10011.37},
                    {name:'吉林', value:10568.83},
                    {name:'山西', value:11237.55},
                    {name:'天津', value:11307.28},
                    {name:'江西', value:11702.82},
                    {name:'广西', value:11720.87},
                    {name:'陕西', value:12512.3},
                    {name:'黑龙江', value:12582},
                    {name:'内蒙古', value:14359.88},
                    {name:'安徽', value:15300.65},
                    {name:'北京', value:16251.93, selected:true},
                    {name:'福建', value:17560.18},
                    {name:'上海', value:19195.69, selected:true},
                    {name:'湖北', value:19632.26},
                    {name:'湖南', value:19669.56},
                    {name:'四川', value:21026.68},
                    {name:'辽宁', value:22226.7},
                    {name:'河北', value:24515.76},
                    {name:'河南', value:26931.03},
                    {name:'浙江', value:32318.85},
                    {name:'山东', value:45361.85},
                    {name:'江苏', value:49110.27},
                    {name:'广东', value:53210.28, selected:true}
                ]
            },
            {
                name:'各省销量',
                type:'pie',
                roseType : 'area',
                tooltip: {
                    trigger: 'item',
                    formatter: "{a} <br/>{b} : {c} ({d}%)"
                },
                center: [700, 225],
                radius: [30, 120],
                data:[
                    {name: '北京', value: 16251.93},
                    {name: '上海', value: 19195.69},
                    {name: '广东', value: 53210.28}
                ]
            }
        ],
        animation: (function() {
            functionMap.mix3 = function() {
                var ecConfig = require('echarts/config');
                myChart.on(ecConfig.EVENT.MAP_SELECTED, function(param){
                    var selected = param.selected;
                    var option = optionMap.mix3;
                    var mapSeries = option.series[0];
                    var data = [];
                    var legendData = [];
                    var name;
                    for (var p = 0, len = mapSeries.data.length; p < len; p++) {
                        name = mapSeries.data[p].name;
                        mapSeries.data[p].selected = selected[name];
                        if (selected[name]) {
                            data.push({
                                name: name,
                                value: mapSeries.data[p].value
                            });
                            legendData.push(name);
                        }
                    }
                    option.legend.data = legendData;
                    option.series[1].data = data;
                    myChart.setOption(option, true);
                })
            }
            return false;
        })()
    },
    lasagna : (function() {
         functionMap.lasagna = function() {
            myChart.setOption({
                tooltip : {
                    trigger: 'item',
                    formatter: "{a} <br/>{b} : {c} ({d}%)"
                },
                legend: {
                    orient : 'vertical',
                    x : 'left',
                    data:['Chrome','Firefox','Safari','IE9+','IE8-']
                },
                toolbox: {
                    show : true,
                    feature : {
                        mark : {show: true},
                        dataView : {show: true, readOnly: false},
                        restore : {show: true},
                        saveAsImage : {show: true}
                    }
                },
                series : (function(){
                    var series = [];
                    for (var i = 0; i < 30; i++) {
                        series.push({
                            name:'浏览器（数据纯属虚构）',
                            type:'pie',
                            itemStyle : {normal : {
                                label : {show : i > 28},
                                labelLine : {show : i > 28, length:20}
                            }},
                            radius : [i * 4 + 40, i * 4 + 43],
                            data:[
                                {value: i * 128 + 80,  name:'Chrome'},
                                {value: i * 64  + 160,  name:'Firefox'},
                                {value: i * 32  + 320,  name:'Safari'},
                                {value: i * 16  + 640,  name:'IE9+'},
                                {value: i * 8  + 1280, name:'IE8-'}
                            ]
                        })
                    }
                    series[0].markPoint = {
                        symbol:'emptyCircle',
                        symbolSize:series[0].radius[0],
                        effect:{show:true,scaleSize:13,color:'rgba(250,225,50,0.8)',shadowBlur:10,period:30},
                        data:[{x:'50%',y:'50%'}]
                    };
                    return series;
                })(),
                calculable : (function(){
                    setTimeout(function(){
                        if (!myChart) {
                            return;
                        }
                        var _ZR = myChart.getZrender();
                        // 补充千层饼
                        _ZR.addShape({
                            shape : 'text',
                            style : {
                                x : _ZR.getWidth() / 2,
                                y : _ZR.getHeight() / 2,
                                color: '#666',
                                text : '恶梦的过去',
                                textAlign : 'center'
                            }
                        });
                        _ZR.addShape({
                            shape : 'text',
                            style : {
                                x : _ZR.getWidth() / 2 + 200,
                                y : _ZR.getHeight() / 2,
                                brushType:'fill',
                                color: 'orange',
                                text : '美好的未来',
                                textAlign : 'left',
                                textFont:'normal 20px 微软雅黑'
                            }
                        });
                        _ZR.refresh();
                    }, 2000);
                    return false;
                })()
            }, true);
        }
        functionMap.wormhole = function() {
            myChart.setOption({
                color : (function(){
                    var zrColor = require('zrender/tool/color');
                    return zrColor.getStepColors('yellow', 'red', 28);
                })(),
                title : {
                    text: '浏览器占比变化',
                    subtext: '纯属虚构',
                    x:'right',
                    y:'bottom'
                },
                tooltip : {
                    trigger: 'item',
                    backgroundColor : 'rgba(0,0,250,0.2)'
                },
                legend: {
                   // orient : 'vertical',
                    //x : 'center',
                    data: function(){
                            var list = [];
                            for (var i = 1; i <=28; i++) {
                                list.push(i + 2000);
                            }
                            return list;
                        }()
                },
                toolbox: {
                    show : true,
                    orient : 'vertical',
                    y:'center',
                    feature : {
                        mark : {show: true},
                        dataView : {show: true, readOnly: false},
                        restore : {show: true},
                        saveAsImage : {show: true}
                    }
                },
               polar : [
                   {
                       indicator : [
                           { text: 'IE8-', max: 400},
                           { text: 'IE9+', max: 400},
                           { text: 'Safari', max: 400},
                           { text: 'Firefox', max: 400},
                           { text: 'Chrome', max: 400}
                        ],
                        center : ['50%', 240],
                        radius : 150
                    }
                ],
                calculable : false,
                series : (function(){
                    var series = [];
                    for (var i = 1; i <= 28; i++) {
                        series.push({
                            name:'浏览器（数据纯属虚构）',
                            type:'radar',
                            symbol:'none',
                            itemStyle: {
                                normal: {
                                    lineStyle: {
                                      width:1
                                    }
                                },
                                emphasis : {
                                    areaStyle: {color:'rgba(0,250,0,0.3)'}
                                }

                            },
                            data:[
                              {
                                value:[
                                    (40 - i) * 10,
                                    (38 - i) * 4 + 60,
                                    i * 5 + 10,
                                    i * 9,
                                    i * i /2
                                ],
                                name:i + 2000
                              }
                            ]
                        })
                    }
                    return series;
                })()
            }, true);
        }
        return {};
    })(),
    effect : (function() {
    	var effect = {
		    show: true,
		    scaleSize: 1,
		    period: 10,             // 运动周期，无单位，值越大越慢
		    color: '#fff',
		    shadowColor: 'rgba(220,220,220,0.8)',
		    shadowBlur : 15 
		};
		function itemStyle(idx) {
		    return {
		        normal: {
		            color:'#fff',
		            borderWidth:1,
		            borderColor:['rgba(30,144,255,1)','lime'][idx],
		            lineStyle: {
		                type: 'solid',
		                shadowColor : ['rgba(30,144,255,1)','lime'][idx], //默认透明
		                shadowBlur: 10,
		                shadowOffsetX: 0,
		                shadowOffsetY: 0
		            }
		        }
		    }
		};
         functionMap.effect = function() {
            myChart.setOption({
		    //ackgroundColor: '#1b1b1b',
		    color: ['rgba(30,144,255,1)','lime'],
		    title : {
		        text: '中国铁路运输主干线',
		        subtext:'数据来自维基百科',
		        sublink: 'http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD%E9%93%81%E8%B7%AF%E8%BF%90%E8%BE%93',
		        x:'center',
		        textStyle : {
		            color: '#fff'
		        }
		    },
		    tooltip : {
		        trigger: 'item',
		        formatter: function(v) {
		            return v[1].replace(':', ' > ');
		        }
		    },
		    legend: {
		        orient: 'vertical',
                x:'left',
		        selectedMode:'single',
		        data:['八纵通道', '八横通道'],
		        textStyle : {
		            color: '#fff'
		        }
		    },
		    toolbox: {
		        show : true,
		        orient : 'vertical',
		        x: 'right',
		        y: 'center',
		        feature : {
		            mark : {show: true},
		            dataView : {show: true, readOnly: false},
		            restore : {show: true},
		            saveAsImage : {show: true}
		        }
		    },
		    series : [
		        {
		            name: '八纵通道',
		            type: 'map',
		            roam: true,
		            hoverable: false,
		            mapType: 'china',
		            itemStyle:{
		                normal:{
		                    borderColor:'rgba(100,149,237,1)',
		                    borderWidth:0.5,
		                    areaStyle:{
		                        color: '#333'
		                    }
		                }
		            },
		            data:[],
		            markLine : {
		                symbol: ['circle', 'circle'],  
		                symbolSize : 1,
		                effect : effect,
		                itemStyle : itemStyle(0),
		                smooth:false,
		                data : [
		                    [{name:'北京'}, {name:'哈尔滨'}],
		                    [{name:'哈尔滨'}, {name:'满洲里'}],
		                    
		                    [{name:'沈阳'}, {name:'大连'}],
		                    [{name:'大连'}, {name:'烟台'}],
		                    [{name:'烟台'}, {name:'青岛'}],
		                    [{name:'青岛'}, {name:'淮安'}],
		                    [{name:'淮安'}, {name:'上海'}],
		                    [{name:'上海'}, {name:'杭州'}],
		                    [{name:'杭州'}, {name:'宁波'}],
		                    [{name:'宁波'}, {name:'温州'}],
		                    [{name:'温州'}, {name:'福州'}],
		                    [{name:'福州'}, {name:'厦门'}],
		                    [{name:'厦门'}, {name:'广州'}],
		                    [{name:'广州'}, {name:'湛江'}],
		                    
		                    [{name:'北京'}, {name:'天津'}],
		                    [{name:'天津'}, {name:'济南'}],
		                    [{name:'济南'}, {name:'南京'}],
		                    [{name:'南京'}, {name:'上海'}],
		                    
		                    [{name:'北京'}, {name:'南昌'}],
		                    [{name:'南昌'}, {name:'深圳'}],
		                    [{name:'深圳'}, {name:'九龙红磡'}],
		                    
		                    [{name:'北京'}, {name:'郑州'}],
		                    [{name:'郑州'}, {name:'武汉'}],
		                    [{name:'武汉'}, {name:'广州'}],
		                    
		                    [{name:'大同'}, {name:'太原'}],
		                    [{name:'太原'}, {name:'焦作'}],
		                    [{name:'焦作'}, {name:'洛阳'}],
		                    [{name:'洛阳'}, {name:'柳州'}],
		                    [{name:'柳州'}, {name:'湛江'}],
		                    
		                    [{name:'包头'}, {name:'西安'}],
		                    [{name:'西安'}, {name:'重庆'}],
		                    [{name:'重庆'}, {name:'贵阳'}],
		                    [{name:'贵阳'}, {name:'柳州'}],
		                    [{name:'柳州'}, {name:'南宁'}],
		                    
		                    [{name:'兰州'}, {name:'成都'}],
		                    [{name:'成都'}, {name:'昆明'}]
		                ]
		            }
		        },
		        {
		            name: '八横通道',
		            type: 'map',
		            mapType: 'china',
		            data:[],
		            markLine : {
		                symbol: ['circle', 'circle'],  
		                symbolSize : 1,
		                effect : effect,
		                itemStyle : itemStyle(1),
		                smooth:false,
		                data : [
		                    [{name:'北京'}, {name:'兰州'}],
		                    [{name:'兰州'}, {name:'拉萨'}],
		                    
		                    [{name:'大同'}, {name:'秦皇岛'}],
		                    
		                    [{name:'神木'}, {name:'黄骅'}],
		                    
		                    [{name:'太原'}, {name:'德州'}],
		                    [{name:'德州'}, {name:'龙口'}],
		                    [{name:'龙口'}, {name:'烟台'}],
		                    
		                    [{name:'太原'}, {name:'德州'}],
		                    [{name:'德州'}, {name:'济南'}],
		                    [{name:'济南'}, {name:'青岛'}],
		                    
		                    [{name:'长治'}, {name:'邯郸'}],
		                    [{name:'邯郸'}, {name:'济南'}],
		                    [{name:'济南'}, {name:'青岛'}],
		                    
		                    [{name:'瓦塘'}, {name:'临汾'}],
		                    [{name:'临汾'}, {name:'长治'}],
		                    [{name:'长治'}, {name:'汤阴'}],
		                    [{name:'汤阴'}, {name:'台前'}],
		                    [{name:'台前'}, {name:'兖州'}],
		                    [{name:'兖州'}, {name:'日照'}],
		                    
		                    [{name:'侯马'}, {name:'月山'}],
		                    [{name:'月山'}, {name:'新乡'}],
		                    [{name:'新乡'}, {name:'兖州'}],
		                    [{name:'兖州'}, {name:'日照'}],
		                    
		                    [{name:'连云港'}, {name:'郑州'}],
		                    [{name:'郑州'}, {name:'兰州'}],
		                    [{name:'兰州'}, {name:'乌鲁木齐'}],
		                    [{name:'乌鲁木齐'}, {name:'阿拉山口'}],
		                    
		                    [{name:'西安'}, {name:'南阳'}],
		                    [{name:'南阳'}, {name:'信阳'}],
		                    [{name:'信阳'}, {name:'合肥'}],
		                    [{name:'合肥'}, {name:'南京'}],
		                    [{name:'南京'}, {name:'启东'}],
		                    
		                    [{name:'重庆'}, {name:'武汉'}],
		                    [{name:'武汉'}, {name:'九江'}],
		                    [{name:'九江'}, {name:'铜陵'}],
		                    [{name:'铜陵'}, {name:'南京'}],
		                    [{name:'南京'}, {name:'上海'}],
		                    
		                    [{name:'上海'}, {name:'怀化'}],
		                    [{name:'怀化'}, {name:'重庆'}],
		                    [{name:'重庆'}, {name:'成都'}],
		                    [{name:'成都'}, {name:'贵阳'}],
		                    [{name:'贵阳'}, {name:'昆明'}],
		                    
		                    [{name:'昆明'}, {name:'南宁'}],
		                    [{name:'南宁'}, {name:'黎塘'}],
		                    [{name:'黎塘'}, {name:'湛江'}]
		                ]
		            },
		            geoCoord: {
		                '阿拉山口':[82.5757,45.1706],
		                '包头':[109.8403,40.6574],
		                '北京':[116.4075,39.9040],
		                '成都':[104.0665,30.5723],
		                '大连':[121.6147,38.9140],
		                '大同':[113.3001,40.0768],
		                '德州':[116.3575,37.4341],
		                '福州':[119.2965,26.0745],
		                '广州':[113.2644,23.1292],
		                '贵阳':[106.6302,26.6477],
		                '哈尔滨':[126.5363,45.8023],
		                '邯郸':[114.5391,36.6256],
		                '杭州':[120.1551,30.2741],
		                '合肥':[117.2272,31.8206],
		                '侯马':[111.3720,35.6191],
		                '怀化':[109.9985,27.5550],
		                '淮安':[119.0153,33.6104],
		                '黄骅':[117.3300,38.3714],
		                '济南':[117.1205,36.6510],
		                '焦作':[113.2418,35.2159],
		                '九江':[116.0019,29.7051],
		                '九龙红磡':[114.1870,22.3076],
		                '昆明':[102.8329,24.8801],
		                '拉萨':[91.1409,29.6456],
		                '兰州':[103.8343,36.0611],
		                '黎塘':[109.1363,23.2066],
		                '连云港':[119.2216,34.5967],
		                '临汾':[111.5190,36.0880],
		                '柳州':[109.4160,24.3255],
		                '龙口':[120.4778,37.6461],
		                '洛阳':[112.4540,34.6197],
		                '满洲里':[117.3787,49.5978],
		                '南昌':[115.8581,28.6832],
		                '南京':[118.7969,32.0603],
		                '南宁':[108.3661,22.8172],
		                '南阳':[112.5283,32.9908],
		                '宁波':[121.5440,29.8683],
		                '启东':[121.6574,31.8082],
		                '秦皇岛':[119.6005,39.9354],
		                '青岛':[120.3826,36.0671],
		                '日照':[119.5269,35.4164],
		                '厦门':[118.0894,24.4798],
		                '上海':[121.4737,31.2304],
		                '深圳':[114.0579,22.5431],
		                '神木':[110.4871,38.8610],
		                '沈阳':[123.4315,41.8057],
		                '台前':[115.8717,35.9701],
		                '太原':[112.5489,37.8706],
		                '汤阴':[114.3572,35.9218],
		                '天津':[117.2010,39.0842],
		                '铜陵':[117.8121,30.9454],
		                '瓦塘':[109.7600,23.3161],
		                '温州':[120.6994,27.9943],
		                '乌鲁木齐':[87.6168,43.8256],
		                '武汉':[114.3054,30.5931],
		                '西安':[108.9402,34.3416],
		                '新乡':[113.9268,35.3030],
		                '信阳':[114.0913,32.1470],
		                '烟台':[121.4479,37.4638],
		                '兖州':[116.7838,35.5531],
		                '月山':[113.0550,35.2104],
		                '湛江':[110.3594,21.2707],
		                '长治':[113.1163,36.1954],
		                '郑州':[113.6254,34.7466],
		                '重庆':[106.5516,29.5630]
		            }
		        }
		    ]
		}, true);
        }
        functionMap.effect2 = function() {
            myChart.setOption({
			    dbackgroundColor: '#1b1b1b',
			    color: ['gold','aqua','lime'],
			    title : {
			        text: '模拟迁徙',
			        subtext:'数据纯属虚构',
			        x:'center',
			        textStyle : {
			            color: '#fff'
			        }
			    },
			    tooltip : {
			        trigger: 'item',
			        formatter: function(v) {
			            return v[1].replace(':', ' > ');
			        }
			    },
			    legend: {
			        orient: 'vertical',
			        x:'left',
			        data:['北京 Top10', '上海 Top10', '广州 Top10'],
			        selectedMode: 'single',
			        selected:{
			            '上海 Top10' : false,
			            '广州 Top10' : false
			        },
			        textStyle : {
			            color: '#fff'
			        }
			    },
			    toolbox: {
			        show : true,
			        orient : 'vertical',
			        x: 'right',
			        y: 'center',
			        feature : {
			            mark : {show: true},
			            dataView : {show: true, readOnly: false},
			            restore : {show: true},
			            saveAsImage : {show: true}
			        }
			    },
			    dataRange: {
			        min : 0,
			        max : 100,
			        calculable : true,
			        color: ['red','orange','yellow','lightgreen'],
			        textStyle:{
			            color:'#fff'
			        }
			    },
			    series : [
			        {
			            name: '全国',
			            type: 'map',
			            roam: true,
			            hoverable: false,
			            mapType: 'china',
			            itemStyle:{
			                normal:{
			                    borderColor:'rgba(100,149,237,1)',
			                    borderWidth:0.5,
			                    areaStyle:{
			                        color: '#333'
			                    }
			                }
			            },
			            data:[],
			            markLine : {
			                smooth:true,
			                symbol: ['none', 'circle'],  
			                symbolSize : 1,
			                itemStyle : {
			                    normal: {
			                        color:'#fff',
			                        borderWidth:1,
			                        borderColor:'rgba(30,144,255,0.5)'
			                    }
			                },
			                data : [
			                    [{name:'北京'},{name:'包头'}],
			                    [{name:'北京'},{name:'北海'}],
			                    [{name:'北京'},{name:'广州'}],
			                    [{name:'北京'},{name:'郑州'}],
			                    [{name:'北京'},{name:'长春'}],
			                    [{name:'北京'},{name:'长治'}],
			                    [{name:'北京'},{name:'重庆'}],
			                    [{name:'北京'},{name:'长沙'}],
			                    [{name:'北京'},{name:'成都'}],
			                    [{name:'北京'},{name:'常州'}],
			                    [{name:'北京'},{name:'丹东'}],
			                    [{name:'北京'},{name:'大连'}],
			                    [{name:'北京'},{name:'东营'}],
			                    [{name:'北京'},{name:'延安'}],
			                    [{name:'北京'},{name:'福州'}],
			                    [{name:'北京'},{name:'海口'}],
			                    [{name:'北京'},{name:'呼和浩特'}],
			                    [{name:'北京'},{name:'合肥'}],
			                    [{name:'北京'},{name:'杭州'}],
			                    [{name:'北京'},{name:'哈尔滨'}],
			                    [{name:'北京'},{name:'舟山'}],
			                    [{name:'北京'},{name:'银川'}],
			                    [{name:'北京'},{name:'衢州'}],
			                    [{name:'北京'},{name:'南昌'}],
			                    [{name:'北京'},{name:'昆明'}],
			                    [{name:'北京'},{name:'贵阳'}],
			                    [{name:'北京'},{name:'兰州'}],
			                    [{name:'北京'},{name:'拉萨'}],
			                    [{name:'北京'},{name:'连云港'}],
			                    [{name:'北京'},{name:'临沂'}],
			                    [{name:'北京'},{name:'柳州'}],
			                    [{name:'北京'},{name:'宁波'}],
			                    [{name:'北京'},{name:'南京'}],
			                    [{name:'北京'},{name:'南宁'}],
			                    [{name:'北京'},{name:'南通'}],
			                    [{name:'北京'},{name:'上海'}],
			                    [{name:'北京'},{name:'沈阳'}],
			                    [{name:'北京'},{name:'西安'}],
			                    [{name:'北京'},{name:'汕头'}],
			                    [{name:'北京'},{name:'深圳'}],
			                    [{name:'北京'},{name:'青岛'}],
			                    [{name:'北京'},{name:'济南'}],
			                    [{name:'北京'},{name:'太原'}],
			                    [{name:'北京'},{name:'乌鲁木齐'}],
			                    [{name:'北京'},{name:'潍坊'}],
			                    [{name:'北京'},{name:'威海'}],
			                    [{name:'北京'},{name:'温州'}],
			                    [{name:'北京'},{name:'武汉'}],
			                    [{name:'北京'},{name:'无锡'}],
			                    [{name:'北京'},{name:'厦门'}],
			                    [{name:'北京'},{name:'西宁'}],
			                    [{name:'北京'},{name:'徐州'}],
			                    [{name:'北京'},{name:'烟台'}],
			                    [{name:'北京'},{name:'盐城'}],
			                    [{name:'北京'},{name:'珠海'}],
			                    [{name:'上海'},{name:'包头'}],
			                    [{name:'上海'},{name:'北海'}],
			                    [{name:'上海'},{name:'广州'}],
			                    [{name:'上海'},{name:'郑州'}],
			                    [{name:'上海'},{name:'长春'}],
			                    [{name:'上海'},{name:'重庆'}],
			                    [{name:'上海'},{name:'长沙'}],
			                    [{name:'上海'},{name:'成都'}],
			                    [{name:'上海'},{name:'丹东'}],
			                    [{name:'上海'},{name:'大连'}],
			                    [{name:'上海'},{name:'福州'}],
			                    [{name:'上海'},{name:'海口'}],
			                    [{name:'上海'},{name:'呼和浩特'}],
			                    [{name:'上海'},{name:'合肥'}],
			                    [{name:'上海'},{name:'哈尔滨'}],
			                    [{name:'上海'},{name:'舟山'}],
			                    [{name:'上海'},{name:'银川'}],
			                    [{name:'上海'},{name:'南昌'}],
			                    [{name:'上海'},{name:'昆明'}],
			                    [{name:'上海'},{name:'贵阳'}],
			                    [{name:'上海'},{name:'兰州'}],
			                    [{name:'上海'},{name:'拉萨'}],
			                    [{name:'上海'},{name:'连云港'}],
			                    [{name:'上海'},{name:'临沂'}],
			                    [{name:'上海'},{name:'柳州'}],
			                    [{name:'上海'},{name:'宁波'}],
			                    [{name:'上海'},{name:'南宁'}],
			                    [{name:'上海'},{name:'北京'}],
			                    [{name:'上海'},{name:'沈阳'}],
			                    [{name:'上海'},{name:'秦皇岛'}],
			                    [{name:'上海'},{name:'西安'}],
			                    [{name:'上海'},{name:'石家庄'}],
			                    [{name:'上海'},{name:'汕头'}],
			                    [{name:'上海'},{name:'深圳'}],
			                    [{name:'上海'},{name:'青岛'}],
			                    [{name:'上海'},{name:'济南'}],
			                    [{name:'上海'},{name:'天津'}],
			                    [{name:'上海'},{name:'太原'}],
			                    [{name:'上海'},{name:'乌鲁木齐'}],
			                    [{name:'上海'},{name:'潍坊'}],
			                    [{name:'上海'},{name:'威海'}],
			                    [{name:'上海'},{name:'温州'}],
			                    [{name:'上海'},{name:'武汉'}],
			                    [{name:'上海'},{name:'厦门'}],
			                    [{name:'上海'},{name:'西宁'}],
			                    [{name:'上海'},{name:'徐州'}],
			                    [{name:'上海'},{name:'烟台'}],
			                    [{name:'上海'},{name:'珠海'}],
			                    [{name:'广州'},{name:'北海'}],
			                    [{name:'广州'},{name:'郑州'}],
			                    [{name:'广州'},{name:'长春'}],
			                    [{name:'广州'},{name:'重庆'}],
			                    [{name:'广州'},{name:'长沙'}],
			                    [{name:'广州'},{name:'成都'}],
			                    [{name:'广州'},{name:'常州'}],
			                    [{name:'广州'},{name:'大连'}],
			                    [{name:'广州'},{name:'福州'}],
			                    [{name:'广州'},{name:'海口'}],
			                    [{name:'广州'},{name:'呼和浩特'}],
			                    [{name:'广州'},{name:'合肥'}],
			                    [{name:'广州'},{name:'杭州'}],
			                    [{name:'广州'},{name:'哈尔滨'}],
			                    [{name:'广州'},{name:'舟山'}],
			                    [{name:'广州'},{name:'银川'}],
			                    [{name:'广州'},{name:'南昌'}],
			                    [{name:'广州'},{name:'昆明'}],
			                    [{name:'广州'},{name:'贵阳'}],
			                    [{name:'广州'},{name:'兰州'}],
			                    [{name:'广州'},{name:'拉萨'}],
			                    [{name:'广州'},{name:'连云港'}],
			                    [{name:'广州'},{name:'临沂'}],
			                    [{name:'广州'},{name:'柳州'}],
			                    [{name:'广州'},{name:'宁波'}],
			                    [{name:'广州'},{name:'南京'}],
			                    [{name:'广州'},{name:'南宁'}],
			                    [{name:'广州'},{name:'南通'}],
			                    [{name:'广州'},{name:'北京'}],
			                    [{name:'广州'},{name:'上海'}],
			                    [{name:'广州'},{name:'沈阳'}],
			                    [{name:'广州'},{name:'西安'}],
			                    [{name:'广州'},{name:'石家庄'}],
			                    [{name:'广州'},{name:'汕头'}],
			                    [{name:'广州'},{name:'青岛'}],
			                    [{name:'广州'},{name:'济南'}],
			                    [{name:'广州'},{name:'天津'}],
			                    [{name:'广州'},{name:'太原'}],
			                    [{name:'广州'},{name:'乌鲁木齐'}],
			                    [{name:'广州'},{name:'温州'}],
			                    [{name:'广州'},{name:'武汉'}],
			                    [{name:'广州'},{name:'无锡'}],
			                    [{name:'广州'},{name:'厦门'}],
			                    [{name:'广州'},{name:'西宁'}],
			                    [{name:'广州'},{name:'徐州'}],
			                    [{name:'广州'},{name:'烟台'}],
			                    [{name:'广州'},{name:'盐城'}]
			                ]
			            },
			            geoCoord: {
			                '上海': [121.4648,31.2891],
			                '东莞': [113.8953,22.901],
			                '东营': [118.7073,37.5513],
			                '中山': [113.4229,22.478],
			                '临汾': [111.4783,36.1615],
			                '临沂': [118.3118,35.2936],
			                '丹东': [124.541,40.4242],
			                '丽水': [119.5642,28.1854],
			                '乌鲁木齐': [87.9236,43.5883],
			                '佛山': [112.8955,23.1097],
			                '保定': [115.0488,39.0948],
			                '兰州': [103.5901,36.3043],
			                '包头': [110.3467,41.4899],
			                '北京': [116.4551,40.2539],
			                '北海': [109.314,21.6211],
			                '南京': [118.8062,31.9208],
			                '南宁': [108.479,23.1152],
			                '南昌': [116.0046,28.6633],
			                '南通': [121.1023,32.1625],
			                '厦门': [118.1689,24.6478],
			                '台州': [121.1353,28.6688],
			                '合肥': [117.29,32.0581],
			                '呼和浩特': [111.4124,40.4901],
			                '咸阳': [108.4131,34.8706],
			                '哈尔滨': [127.9688,45.368],
			                '唐山': [118.4766,39.6826],
			                '嘉兴': [120.9155,30.6354],
			                '大同': [113.7854,39.8035],
			                '大连': [122.2229,39.4409],
			                '天津': [117.4219,39.4189],
			                '太原': [112.3352,37.9413],
			                '威海': [121.9482,37.1393],
			                '宁波': [121.5967,29.6466],
			                '宝鸡': [107.1826,34.3433],
			                '宿迁': [118.5535,33.7775],
			                '常州': [119.4543,31.5582],
			                '广州': [113.5107,23.2196],
			                '廊坊': [116.521,39.0509],
			                '延安': [109.1052,36.4252],
			                '张家口': [115.1477,40.8527],
			                '徐州': [117.5208,34.3268],
			                '德州': [116.6858,37.2107],
			                '惠州': [114.6204,23.1647],
			                '成都': [103.9526,30.7617],
			                '扬州': [119.4653,32.8162],
			                '承德': [117.5757,41.4075],
			                '拉萨': [91.1865,30.1465],
			                '无锡': [120.3442,31.5527],
			                '日照': [119.2786,35.5023],
			                '昆明': [102.9199,25.4663],
			                '杭州': [119.5313,29.8773],
			                '枣庄': [117.323,34.8926],
			                '柳州': [109.3799,24.9774],
			                '株洲': [113.5327,27.0319],
			                '武汉': [114.3896,30.6628],
			                '汕头': [117.1692,23.3405],
			                '江门': [112.6318,22.1484],
			                '沈阳': [123.1238,42.1216],
			                '沧州': [116.8286,38.2104],
			                '河源': [114.917,23.9722],
			                '泉州': [118.3228,25.1147],
			                '泰安': [117.0264,36.0516],
			                '泰州': [120.0586,32.5525],
			                '济南': [117.1582,36.8701],
			                '济宁': [116.8286,35.3375],
			                '海口': [110.3893,19.8516],
			                '淄博': [118.0371,36.6064],
			                '淮安': [118.927,33.4039],
			                '深圳': [114.5435,22.5439],
			                '清远': [112.9175,24.3292],
			                '温州': [120.498,27.8119],
			                '渭南': [109.7864,35.0299],
			                '湖州': [119.8608,30.7782],
			                '湘潭': [112.5439,27.7075],
			                '滨州': [117.8174,37.4963],
			                '潍坊': [119.0918,36.524],
			                '烟台': [120.7397,37.5128],
			                '玉溪': [101.9312,23.8898],
			                '珠海': [113.7305,22.1155],
			                '盐城': [120.2234,33.5577],
			                '盘锦': [121.9482,41.0449],
			                '石家庄': [114.4995,38.1006],
			                '福州': [119.4543,25.9222],
			                '秦皇岛': [119.2126,40.0232],
			                '绍兴': [120.564,29.7565],
			                '聊城': [115.9167,36.4032],
			                '肇庆': [112.1265,23.5822],
			                '舟山': [122.2559,30.2234],
			                '苏州': [120.6519,31.3989],
			                '莱芜': [117.6526,36.2714],
			                '菏泽': [115.6201,35.2057],
			                '营口': [122.4316,40.4297],
			                '葫芦岛': [120.1575,40.578],
			                '衡水': [115.8838,37.7161],
			                '衢州': [118.6853,28.8666],
			                '西宁': [101.4038,36.8207],
			                '西安': [109.1162,34.2004],
			                '贵阳': [106.6992,26.7682],
			                '连云港': [119.1248,34.552],
			                '邢台': [114.8071,37.2821],
			                '邯郸': [114.4775,36.535],
			                '郑州': [113.4668,34.6234],
			                '鄂尔多斯': [108.9734,39.2487],
			                '重庆': [107.7539,30.1904],
			                '金华': [120.0037,29.1028],
			                '铜川': [109.0393,35.1947],
			                '银川': [106.3586,38.1775],
			                '镇江': [119.4763,31.9702],
			                '长春': [125.8154,44.2584],
			                '长沙': [113.0823,28.2568],
			                '长治': [112.8625,36.4746],
			                '阳泉': [113.4778,38.0951],
			                '青岛': [120.4651,36.3373],
			                '韶关': [113.7964,24.7028]
			            }
			        },
			        {
			            name: '北京 Top10',
			            type: 'map',
			            mapType: 'china',
			            data:[],
			            markLine : {
			                smooth:true,
			                effect : {
			                    show: true,
			                    size: 3,
			                    shadowColor: 'yellow'
			                },
			                itemStyle : {
			                    normal: {
			                        borderWidth:1
			                    }
			                },
			                data : [
			                    [{name:'北京'}, {name:'上海',value:95}],
			                    [{name:'北京'}, {name:'广州',value:90}],
			                    [{name:'北京'}, {name:'大连',value:80}],
			                    [{name:'北京'}, {name:'南宁',value:70}],
			                    [{name:'北京'}, {name:'南昌',value:60}],
			                    [{name:'北京'}, {name:'拉萨',value:50}],
			                    [{name:'北京'}, {name:'长春',value:40}],
			                    [{name:'北京'}, {name:'包头',value:30}],
			                    [{name:'北京'}, {name:'重庆',value:20}],
			                    [{name:'北京'}, {name:'常州',value:10}]
			                ]
			            },
			            markPoint : {
			                symbol:'emptyCircle',
			                symbolSize : function(v){
			                    return 10 + v/10
			                },
			                effect : {
			                    show: true,
			                    shadowBlur : 0
			                },
			                itemStyle:{
			                    normal:{
			                        label:{show:false}
			                    }
			                },
			                data : [
			                    {name:'上海',value:95},
			                    {name:'广州',value:90},
			                    {name:'大连',value:80},
			                    {name:'南宁',value:70},
			                    {name:'南昌',value:60},
			                    {name:'拉萨',value:50},
			                    {name:'长春',value:40},
			                    {name:'包头',value:30},
			                    {name:'重庆',value:20},
			                    {name:'常州',value:10}
			                ]
			            }
			        },
			        {
			            name: '上海 Top10',
			            type: 'map',
			            mapType: 'china',
			            data:[],
			            markLine : {
			                smooth:true,
			                effect : {
			                    show: true,
			                    size: 3,
			                    shadowColor: 'aqua'
			                },
			                itemStyle : {
			                    normal: {
			                        borderWidth:1
			                    }
			                },
			                data : [
			                    [{name:'上海'},{name:'包头',value:95}],
			                    [{name:'上海'},{name:'昆明',value:90}],
			                    [{name:'上海'},{name:'广州',value:80}],
			                    [{name:'上海'},{name:'郑州',value:70}],
			                    [{name:'上海'},{name:'长春',value:60}],
			                    [{name:'上海'},{name:'重庆',value:50}],
			                    [{name:'上海'},{name:'长沙',value:40}],
			                    [{name:'上海'},{name:'北京',value:30}],
			                    [{name:'上海'},{name:'丹东',value:20}],
			                    [{name:'上海'},{name:'大连',value:10}]
			                ]
			            },
			            markPoint : {
			                symbol:'emptyCircle',
			                symbolSize : function(v){
			                    return 10 + v/10
			                },
			                effect : {
			                    show: true,
			                    shadowBlur : 0
			                },
			                itemStyle:{
			                    normal:{
			                        label:{show:false}
			                    }
			                },
			                data : [
			                    {name:'包头',value:95},
			                    {name:'昆明',value:90},
			                    {name:'广州',value:80},
			                    {name:'郑州',value:70},
			                    {name:'长春',value:60},
			                    {name:'重庆',value:50},
			                    {name:'长沙',value:40},
			                    {name:'北京',value:30},
			                    {name:'丹东',value:20},
			                    {name:'大连',value:10}
			                ]
			            }
			        },
			        {
			            name: '广州 Top10',
			            type: 'map',
			            mapType: 'china',
			            data:[],
			            markLine : {
			                smooth:true,
			                effect : {
			                    show: true,
			                    size: 3,
			                    shadowColor: 'lime'
			                },
			                itemStyle : {
			                    normal: {
			                        borderWidth:1
			                    }
			                },
			                data : [
			                    [{name:'广州'},{name:'福州',value:95}],
			                    [{name:'广州'},{name:'太原',value:90}],
			                    [{name:'广州'},{name:'长春',value:80}],
			                    [{name:'广州'},{name:'重庆',value:70}],
			                    [{name:'广州'},{name:'西安',value:60}],
			                    [{name:'广州'},{name:'成都',value:50}],
			                    [{name:'广州'},{name:'常州',value:40}],
			                    [{name:'广州'},{name:'北京',value:30}],
			                    [{name:'广州'},{name:'北海',value:20}],
			                    [{name:'广州'},{name:'海口',value:10}]
			                ]
			            },
			            markPoint : {
			                symbol:'emptyCircle',
			                symbolSize : function(v){
			                    return 10 + v/10
			                },
			                effect : {
			                    show: true,
			                    shadowBlur : 0
			                },
			                itemStyle:{
			                    normal:{
			                        label:{show:false}
			                    }
			                },
			                data : [
			                    {name:'福州',value:95},
			                    {name:'太原',value:90},
			                    {name:'长春',value:80},
			                    {name:'重庆',value:70},
			                    {name:'西安',value:60},
			                    {name:'成都',value:50},
			                    {name:'常州',value:40},
			                    {name:'北京',value:30},
			                    {name:'北海',value:20},
			                    {name:'海口',value:10}
			                ]
			            }
			        }
			    ]
			}, true);
        }
        return {};
    })()
}