<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"><link rel="shortcut icon" href="https://echarts-www.cdn.bcebos.com/examples/images/favicon.png?_v_=20200710_1"><!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries--><!--[if lt IE 9]><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script><![endif]--><link rel="stylesheet" type="text/css" href="https://echarts-www.cdn.bcebos.com/examples/stylesheets/main.css?_v_=1598523330519"><title>Examples - Apache ECharts (incubating)</title><script type="text/javascript">window.EC_DEMO_LANG = 'zh';
</script></head><body><div id="apache-banner"><div class="txt"><p>Apache ECharts 是一个正在由 Apache 孵化器赞助的 Apache 开源基金会孵化的项目。</p><p>我们正在处理将本站跳转到 <a href="https://echarts.apache.org" target="_blank">https://echarts.apache.org</a> 的迁移工作。您可以现在就前往我们的 Apache 官网以获取最新版的网站信息。</p></div><a href="https://echarts.apache.org" target="_blank" onclick="logApache()" class="btn"><div>访问官网</div></a><a href="javascript:;" onclick="closeApacheBanner(true)" class="close-btn">x</a></div><div id="view-main"><div class="control-panel"></div><div id="view-chart" class="chart"></div></div><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery@1.11.3/dist/jquery.min.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/lodash@3.10.1/index.min.js"></script><script type="text/javascript" src="https://echarts-www.cdn.bcebos.com/examples/javascripts/common.js?_v_=1598523330519"></script><script type="text/javascript">function changeLang(lang) {
    if (lang === 'en') {
        if (location.hostname !== 'echarts.apache.org') {
            var re = new RegExp('/zh/', 'g');
            var pathname = location.pathname.replace(re, '/en/');

            var url = 'https://echarts.apache.org' + pathname
                + location.search + location.hash;
            location.href = url;
            return;
        }
    }
    location.href = location.href.replace(
        new RegExp('/(zh|en)/', 'g'), '/' + lang + '/'
    );
}

window.EC_EXAMPLE_IS_GL = (function () {
    var urlParams = (location.search || '').replace(/^\?/, '').split('&');
    for (var i = 0; i < urlParams.length; i++) {
        var kv = urlParams[i].split('=');
        if (kv[0] === 'gl' && kv[1] && kv[1] !== '0') {
            return true;
        }
    }
    return false;
})();

// ROOT_PATH is also used in example js. So we also use https://echarts-www.cdn.bcebos.com/examples.
// But echarts-gl do not support CORS yet, still use same origin.
window.ROOT_PATH = EC_EXAMPLE_IS_GL ? 'https://echarts.apache.org/examples' : 'https://echarts-www.cdn.bcebos.com/examples';
window.CDN_PAY_ROOT_PATH = 'https://echarts-www.cdn.bcebos.com/examples';
window.CDN_PAY_VERSION = '20200710_1';
window.CDN_THIRD_PARTY_ECHARTS_GL = 'https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js'
</script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/dat.gui@0.6.5/build/dat.gui.min.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js?_v_=1598523330519"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat/dist/ecStat.min.js"></script><script id="echarts-js" type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js?_v_=1598523330519"></script><script id="echarts-js" type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/world.js?_v_=1598523330519"></script><script id="echarts-js" type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.js?_v_=1598523330519"></script><script id="echarts-js" type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&amp;ak=KOmVjPVUAey1G2E8zNhPiuQ6QiEmAwZu&amp;__ec_v__=20190126"></script><script id="echarts-js" type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/bmap.js?_v_=1598523330519"></script><script type="text/javascript" src="https://echarts-www.cdn.bcebos.com/examples/javascripts/view.js?_v_=1598523330519"></script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");

hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";

var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-141228404-1');</script></body></html>